2012-02-18 11 views
36

Mam formularz, który używa form_tag i nie wiem, jak go używać z simple_form gem. Tak wygląda moja forma:Czy form_tag działa z Simple_form?

<%= form_tag create_multiple_prices_path, :method => :post do %> 

    <% @prices.each_with_index do |price, index| %> 
    <%= fields_for "prices[#{index}]", price do |up| %> 
     <%= render "fields", :f => up %> 
    <% end %> 
    <% end %> 

    <%= submit_tag "Done" %> 
<% end %> 

Czy to można zrobić? W jaki sposób zmiana form_tag spowoduje prawidłowe użycie simple_form? A co powiesz na używanie go z fields_for? Newbie mógłby skorzystać z pomocy.

Dziękuję.

Odpowiedz

16

simple_form to opakowanie o numerze form_for, a nie form_tag. Możesz użyć simple_form_for zamiast form_for, ale form_tag tworzy po prostu znaczniki <form> z określoną zawartością, nie ma znaczenia dla prostej formy.

131

Możesz użyć simple_form, nawet jeśli nie tworzysz formularza powiązanego z modelem.

Weź tę formę internetową logowania jako przykład:

<%= simple_form_for :signin, { url: signin_path } do |f| %> 
    <%= f.input :email %> 
    <%= f.input :password %> 
    <%= f.button :submit, "Sign In" %> 
<% end %> 

To wygeneruje params tak:

{ 
    ... 
    "signin" => { 
    "email"=>"[email protected]", 
    "password"=>"[FILTERED]"}, 
    "commit"=>"Sign In" 
    } 
} 

W kontrolerze można odwoływać się do pól formularzy przy użyciu:

params[:signin][:email] ... 
+0

dzięki. Dokładnie tego potrzebuję. – gotqn

+0

Dziękuję. Pomóż mi dużo. – zires

+0

Dziękuję bardzo! Byłem z tym problemem 2 godziny i uratowałeś mnie. Dzięki! – Blaze

5

Możesz uniknąć korzystania z

params[:signin][:email] 

użyciu

<%= f.input :email, input_html: { name: "email" } %> 

tak

params[:email] 
+0

Tego właśnie potrzebowałem! – ngoue

1

jak @barelyknown powiedział Można użyć simple_form nawet bez modelu Można również użyć field_for lub simple_field_for

<%= simple_form_for :transaction_limits, {url: create_multiple_prices_path, method: :post} do |f| %> 
    <% @prices.each_with_index do |price, index| %> 
    <%= f.fields_for "prices[#{index}]", price do |up| %> 
     <%= render "fields", :f => up %> 
    <% end %> 
    <% end %> 

    <%= f.submit "button" %> 
<% end %> 
Powiązane problemy