所以我一直在墙上敲了六个小时。我之前已经开始工作,看起来一切都完全相同。我收到未经许可的参数:测试错误。这是我的布局:
User.rb
WEB-INF
Test.rb
has_many :tests
accepts_nested_attributes_for :tests, reject_if: :all_blank, allow_destroy: true
用户控制器
belongs_to :user
测试控制器
def update
current_user.update_attributes(user_params)
redirect_to root_path
end
def user_params
params.require(:user).permit(:name, :email, :tests_attributes => [:id, :response])
end
测试/ show.html.erb
def show
@test = Test.where(:secure_id => params[:id]).first
@user = User.find(@test.user_id)
end
def test_params
params.require(:test).permit(:user_id, :test_name, :secure_id)
end
由于公司政策,我更改了名称并省略了代码。如果需要更多代码,请告诉我,我会提供。
我已经阅读了大量的stackoverflow帖子,阅读了simple_forms嵌套属性部分以及许多其他内容。
答案 0 :(得分:0)
fields_for
的第一个参数必须是记录名称,在您的情况下为:tests
(用户has_many:测试)。第二个参数是一个记录对象,用于呈现fields_for
内的输入。您将@test
作为第一个参数传递,fields_for
将其视为记录名称,并添加test
参数,这是您的强参数中不允许的。
所以,它应该是这样的:
<%= u.simple_fields_for :tests, @test do |as| %>