Railscast 198, но с использованием formtastic - PullRequest
4 голосов
/ 01 июля 2011

Как вы могли бы сделать то, что описано в RyanB's Railscast при редактировании нескольких записей по отдельности с использованием Formtastic?Formtastic не использует form_tag, на который опирается метод RyanB.

1 Ответ

6 голосов
/ 07 июля 2011

semantic_form_for - это просто оболочка вокруг form_for, поэтому вы можете использовать те же параметры.Вот формальная версия скринкаста Райана Бейтса

views/products/edit_individual.html.erb

<% semantic_form_for :update_individual_products, :url => update_individual_products_path, :method => :put do |f| %>
  <% for product in @products %>
    <% f.fields_for "products[]", product do |ff| %>
      <h2><%=h product.name %></h2>
      <%= render "fields", :f => ff %>
    <% end %>
  <% end %>
  <p><%= submit_tag "Submit" %></p>
<% end %>

views/products/index.html.erb

<% semantic_form_for :edit_individual_products, :url => edit_individual_products_path do %>
  <table>
    <tr>
      <th></th>
      <th>Name</th>
      <th>Category</th>
      <th>Price</th>
    </tr>
  <% for product in @products %>
    <tr>
      <td><%= check_box_tag "product_ids[]", product.id %></td>
      <td><%=h product.name %></td>
      <td><%=h product.category.name %></td>
      <td><%= number_to_currency product.price %></td>
      <td><%= link_to "Edit", edit_product_path(product) %></td>
      <td><%= link_to "Destroy", product, :confirm => 'Are you sure?', :method => :delete %></td>
    </tr>
  <% end %>
  </table>
  <p>
    <%= select_tag :field, options_for_select([["All Fields", ""], ["Name", "name"], ["Price", "price"], ["Category", "category_id"], ["Discontinued", "discontinued"]]) %>
    <%= submit_tag "Edit Checked" %>
  </p>
<% end %>

Обратите внимание, что вытакже можно использовать помощники form_for в formtastic.

Обновление

Если вы хотите использовать и вложенные атрибуты, все должно работать из коробки,использование fields_for в частичной форме.Давайте продолжим с примером Railscast и скажем, что:

product.rb

has_many :commments
accepts_nested_attributes_for :comments

Вы можете редактировать комментарии на _fields.html.erb продуктов, таких как:

<%= f.fields_for :comments do |cf| %>
  <%=render 'comments/fields', :f=>cf%>
<%end%>

И убедитесь, что у вас есть частичные поля в ваших комментариях.

...