2009-08-22 5 views
0

В этом коде у меня есть флажки для каждого элемента, которые дают пользователю возможность удалять сразу несколько элементов, но если пользователь нажимает кнопку удаления без проверки какого-либо элемента, он дает ошибку:Проверить значения перед отправкой на контроллер в рельсах

<% form_for :product , :url => { :action => :delete_selected } do %> 
<table border="1px"> 
    <tr> 
     <th> 
      Select 
     </th> 
     <th> 
      Image 
     </th> 
     <th> 
      Product Name 
     </th> 
     <th> 
      Product Description 
     </th> 
     <th> 
      Product Price 
     </th> 
     <th> 
      Categories 
     </th> 
     <th colspan="3"> 
      Actions 
     </th> 
    </tr> 
    <% @products.each do |p| %> 
    <tr> 
     <td> 
      <%= check_box_tag "product_ids[]", p.id, false, :id => "product_#{p.id}" %> 
     </td> 
     <td> 
      <%= image_tag p.photo.url(:thumb) , :alt => "#{p.name}" %> 
     </td> 
     <td> 
      <%= link_to "#{p.name}" , edit_product_path(p) %> 
     </td> 
     <td> 
      <%=h truncate(p.description.gsub(/<.*?>/,''),:length => 80) %> 
     </td> 
     <td> 
      <%=h p.price %> 
     </td> 
     <td> 
      <% for category in p.categories.find(:all) %> 
      <%= link_to "#{category.name}" , category_path(category.id) %> 
      <% end %> 
     </td> 
     <td> 
      <%= link_to 'Show' , product_path(p) %> 
     </td> 
     <td> 
      <%= link_to 'Edit', edit_product_path(p) %> 
     </td> 
     <td> 
      <%= link_to 'Remove', product_path(p), :confirm => "Are you really want to delete #{p.name} ?", :method => 'delete' %> 
     </td> 
     <% end %> 
    </tr> 
</table> 
<div id="products_nav"> 
    <%= link_to "Add a new Product" , new_product_path %> 
    <%= link_to "Add a new Category" , new_category_path %> 
    <%= link_to "Category page" , categories_path %> 
    <%= submit_tag "Remove selected items" , :confirm => "Are you really want to delete these items ?" %> 
</div> 
<% end %> 
  1. Могу ли я проверить перед отправкой в ​​контроллер и выдает предупреждение пользователю, либо оно должно быть сделано в контроллере?

  2. Если я хочу добавить еще один способ для редактирования нескольких элементов одновременно, возможно ли это в этой форме? Я имею в виду, что возможно иметь разные действия для одной формы?

ответ

1

Взгляните на вложенные формы, если вы используете хотя бы Rails 2.3. Он включает помощника, который добавляет флажок «удалить» связанным объектам в родительской форме. Он также предоставит вам формы для редактирования каждого из связанных элементов.

http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

http://jimneath.org/2008/09/06/multi-model-forms-validations-in-ruby-on-rails/

Смежные вопросы