모델없이 Simple Form (Plataformatec)을 사용할 수 있습니까?없는 SimpleForm (모델이 아닌 형식)
https://github.com/plataformatec/simple_form
모델없이 Simple Form (Plataformatec)을 사용할 수 있습니까?없는 SimpleForm (모델이 아닌 형식)
https://github.com/plataformatec/simple_form
당신은 첫 번째 인수로 :symbol
를 사용할 수 있습니다.
<form novalidate="novalidate" class="simple_form user" action="/users" accept-charset="UTF-8" method="post">
...
<div class="input string required user_name">
<label class="string required" for="user_name">
<abbr title="required">*</abbr> Name
</label>
<input class="string required" type="text" name="user[name]" id="user_name" />
</div>
...
</form>
또한 simple_form_for
에 대한 인수로 대신 @object
의 :symbol
을 전달할 수 :
<%= simple_form_for :user, url: users_path do |f| %>
<%= f.input :name, as: :string %>
...
<% end %>
그것은이 같은 출력 뭔가 것이다. 출력은
<%= simple_form_for :email, :url => '/post_email' do |f| %>
<%= f.input :subject, :as => :string %>
<% end %>
는 어느 것 :
<form method="post" class="simple_form email" action="/post_email" accept-charset="UTF-8">
...
<input type="text" size="30" name="email[subject]" id="email_subject">
</form>
다음 무승부 - 백업의주의하십시오 :
:url
과 각 유형을 명시 적으로 정의하기 위해 input
이 옵션은 여전히 커버 아래에있는 모델을 사용합니다. 기호는 모델 이름과 일치해야하며 모델로 해석되고 새 필드를 작성하여 모든 필드에서 사용하므로 양식 필드에 사용 된 특성이 실제로 모델에 있어야합니다. –
불행히도 simple_form은 모델 사용에 의존합니다. 본질적으로 레일즈 * _ 태그 도움말과 동일한 simple_form_tag 및 input_tag 메소드를 사용하는 것이 좋을 것입니다. 그때까지는 쉬운 일이 있습니다.
양식에서 클래스 대신 기호를 사용하고 simple_form이 모델 속성에 액세스하지 못하게하려면 값을 명시 적으로 전달하십시오.
<%= simple_form_for :user, :url => '/users' do |f| %>
<%= f.text_field :name, input_html: { value: nil } %>
<% end %>
이것은 undefined method 'name' for User
오류를 방지합니다.
이것은 나를 위해 일했습니다 : <% = f.input : create_key, input_html : {value : nil}, 필수 : 참, 힌트 : "초대에 의해서만, 이메일에 대한 열쇠"% – codenoob
콜렉션을 사용하는 경우, Model' 오류의 '정의되지 않은 메소드'name '을 피하기 위해'value' 대신에'selected'를 사용합니다 –
위의 모든 방법을 사용하여 양식 데이터를 "사용자"또는 첫 번째 인수로 전달한 기호와 함께 중첩시킬 수 있습니다. 그거 짜증나네.
simple_form의 스타일/이점을 모방하지만 객체/심볼 종속성과 강제 데이터 중첩을 제거하려면 부분을 생성 할 수 있습니다.
HAML
예 :
양식보기 : 부분
= form_tag("path/to/action", method: "POST") do
= render "path/to/partial/field", type: "string", required: true, item: "first_name"
field
:
- required_string = required ? "required" : ""
%div{class: "input #{type} #{required_string} #{item}"}
%label{class: "#{type} #{required_string}", for: "#{item}"}
- if required
%abbr{title: "required"}
*
= t("application.#{item}")
%input{name: "#{item}", |
placeholder: t("application.#{item}"), |
type: "#{type}", |
required: required, |
"aria-required" => "#{required}" }
또한 함께 simple_fields_for과 같이 양식 모델 내에서 모델 외부 필드를 사용할 수 있습니다
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= simple_fields_for :no_model_fields do |n| %>
<%= n.input :other_field %>
<% end %>
<% end %>
다른 모델에서 또는 모델을 사용하지 않고 다른 종류의 필드를 만들 수 있기 때문에 간단하고 실용적인 솔루션입니다.
[다른 질문에 대한 내 대답] [1] 도움이 될 수 있습니다. [1] : http://stackoverflow.com/a/14659270/157816 – baxang
확인 http://stackoverflow.com/questions/12146466/rails-simple-form-fields-not-related- 투 - 더 - 모델 – Dean