gpt4 book ai didi

ruby-on-rails - Rails 4 simple_form has_many 通过复选框不保存

转载 作者:行者123 更新时间:2023-12-04 05:36:55 24 4
gpt4 key购买 nike

我正在尝试使用 simple_form 通过复选框实现员工经常性扣除表。我的代码有效,但选定的经常性扣除额未保存在我的表中。我不明白为什么。

这是我的模型。

class Employee < ActiveRecord::Base
belongs_to :club
has_many :employee_recurrents
has_many :recurrents, :through => :employee_recurrents
end

class Recurrent < ActiveRecord::Base
belongs_to :club
has_many :employee_recurrents
has_many :employees, :through => :employee_recurrents
end

class EmployeeRecurrent < ActiveRecord::Base
belongs_to :employee
belongs_to :recurrent
end

移民
class CreateEmployeeRecurrents < ActiveRecord::Migration
def change
create_table :employee_recurrents, :id => false do |t|

t.references :employee
t.references :recurrent

end

add_index :employee_recurrents, [:employee_id, :recurrent_id]
add_index :employee_recurrents, [:recurrent_id, :employee_id]

end
end

形式
<%= simple_form_for @employee, html: {class: 'form-horizontal' } do |f| %>

<%= f.error_notification %>

<%= f.input :first_name %>
<%= f.input :last_name %>

<%= f.association :recurrents,
as: :check_boxes,
label_method: :description,
value_method: :id,
label: 'Recurrent Deductions' %>

<%= f.button :submit, class: 'btn btn-primary' %>
<% end %>

Controller
def employee_params
params.require(:employee).permit(:first_name, :recurrent_ids)
end

这是我编辑的日志
Started PATCH "/employees/1" for 127.0.0.1 at 2013-08-12 19:38:42 +0800
Processing by EmployeesController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"IwWzcT2qQJqHkTumWjb3OD5nJe9xLaA+YezMumer9X8=", "employee"=>{"job_id"=>"5", "manager_id"=>"", "first_name"=>"Mark", "recurrent_ids"=>["1", ""]}, "commit"=>"Update Employee", "id"=>"1"}
[1m[36mActiveRecord::SessionStore::Session Load (1.2ms)[0m [1mSELECT "sessions".* FROM "sessions" WHERE "sessions"."session_id" = '9a8b066a4033f8fa2ed867371ffaa2a3' ORDER BY "sessions"."id" ASC LIMIT 1[0m
[1m[35mUser Load (0.5ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
[1m[36mEmployee Load (0.8ms)[0m [1mSELECT "employees".* FROM "employees" WHERE "employees"."id" = $1 ORDER BY last_name, first_name LIMIT 1[0m [["id", "1"]]
Unpermitted parameters: recurrent_ids
[1m[35m (0.6ms)[0m BEGIN
[1m[36mEmployee Exists (1.1ms)[0m [1mSELECT 1 AS one FROM "employees" WHERE ("employees"."email" = 'mark@yahoo.com' AND "employees"."id" != 1 AND "employees"."club_id" = 1) LIMIT 1[0m
[1m[35m (0.4ms)[0m COMMIT
Redirected to http://localhost:3000/employees
Completed 302 Found in 22ms (ActiveRecord: 4.6ms)

最佳答案

我需要以下强大的参数

def employee_params
params.require(:employee).permit(:first_name, :recurrent_ids => [])
end

关于ruby-on-rails - Rails 4 simple_form has_many 通过复选框不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com