在嵌套属性上没有将符号隐式转换为整数

Sna*_*ake 1 ruby-on-rails nested-attributes strong-parameters ruby-on-rails-4

我在编辑嵌套属性时遇到问题。我收到此错误:

no implicit conversion of Symbol into Integer
Run Code Online (Sandbox Code Playgroud)

事件.rb:

Class Event < ActiveRecord::Base
  has_many :event_joins, :dependent => :destroy
  accepts_nested_attributes_for :event_joins
end
Run Code Online (Sandbox Code Playgroud)

events_controller.rb :

private
   def event_params
     params.require(:event).permit(event_joins_attributes: [:duration]) 
   end
Run Code Online (Sandbox Code Playgroud)

_form.html.erb :

 =f.fields_for :event_joins_attributes do |a|
    =number_field_tag 'event[event_joins_attributes][duration]'
 end
Run Code Online (Sandbox Code Playgroud)

如果我改变了我params之前的许可

params[:event][:event_joins_attributes][:duration] = params[:event][:event_joins_attributes][:duration].to_i
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

no implicit conversion of String into Integer
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多关于大规模分配的嵌套属性的帖子,但没有任何效果。这是我读过的部分帖子。

强参数允许所有属性用于嵌套属性

rails-4-strong-parameters-nested-objects

白名单属性

当然,我不想做

params.require(:event).permit!
Run Code Online (Sandbox Code Playgroud)

Pav*_*van 7

你必须改变这个

=f.fields_for :event_joins_attributes do |a|
   =number_field_tag 'event[event_joins_attributes][duration]'
end
Run Code Online (Sandbox Code Playgroud)

=f.fields_for :event_joins do |a|
   =a.number_field :duration
end
Run Code Online (Sandbox Code Playgroud)

这样你就可以有你的event_params不变。

小鬼注意:

也总是允许:idevent_params更新才能正常工作。

def event_params
  params.require(:event).permit(:id, event_joins_attributes: [:id, :duration]) 
end
Run Code Online (Sandbox Code Playgroud)