2013-03-17 3 views
1

Я хочу использовать массовое обновление каждой операции в одном представлении с помощью одной кнопки обновления. Используя этот следующий код Rails thows эту ошибкуRails 3: массовое обновление

Showing /home/vincent/git/gestion/app/views/operations/tag.html.erb where line #23 raised: 

undefined method `merge' for 1:Fixnum 
Extracted source (around line #23): 

20:   <td> 
21:    <% @tags.each do |elem| %> 
22:    <%= f.label elem.tag %> 
23:    <%= f.check_box "operation[tag_ids][]", elem.id, operation.tags.include?(elem) %> 
24:    <% end %> 
25:   </td> 
26:   <td><%= f.submit %></td> 

Модели

class Operation < ActiveRecord::Base 
    attr_accessible :credit, :date_operation, :debit, :libelle, :tag_ids 
    has_and_belongs_to_many :tags 
    accepts_nested_attributes_for :tags, :allow_destroy=>true 
end 

class Tag < ActiveRecord::Base 
    attr_accessible :id, :tag 
    has_and_belongs_to_many :operations 
end 

Контроллер

def tag 
    @operations = Operation.limit(100) 
    @tags = Tag.all 
    respond_to do |format| 
     format.html { "tag" }# tag.html.erb 
#  format.json { render json: @operations } 
    end 
    end 

Посмотреть

<% @operations.each do |operation| %> 
    <tr> 

     <td><%= operation.date_operation %></td> 
     <td><%= operation.libelle %></td> 
     <td><%= operation.credit %></td> 
     <td><%= operation.debit %></td> 
     <%= form_for operation do |f| %> 
     <td> 
      <% @tags.each do |elem| %> 
      <%= f.label elem.tag %> 
      <%= f.check_box "operation[tag_ids][]", elem.id, operation.tags.include?(elem) %> 
      <% end %> 
     </td> 
     <td><%= f.submit %></td> 
     <% end %> 
    </tr> 
    <% end %> 

Есть ли у вас какие-либо подсказки/справки об этой проблеме ?

Спасибо заранее

Edit 1: добавление полной трассировки стека

+0

может помочь, если вы включите полный трассировки стека от ошибок; он будет показывать строки, вызывающие ошибку. –

+0

Спасибо, что ответили. Я добавил трассировку стека, чтобы помочь вам помочь. – Turambar37

+0

Измените 'f.check_box' за' check_box_tag' – fmendez

ответ

0

Вы должны изменить f.check_box для , например:

<%= check_box_tag "operation[tag_ids][]", elem.id, operation.tags.include?(elem) %> 

Проблема в данном случае является то, что f.check_box ожидает, что значение ограничено формой, которая не в этом случае.

+0

Ваши советы работают.Спасибо. – Turambar37

0

использование nested_form gem для этого случая я думаю, что это сработает.

больше о nested_form Нажмите here

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