【发布时间】:2015-11-27 18:51:29
【问题描述】:
我是 Rails 新手,我有这些复选框可以很好地显示选项,但在提交表单时不会更改数据库中的任何内容。 视图中的表单有以下一段代码:
<%= form_for(@sector) do |f| %>
<%= f.collection_check_boxes :admins_id, Admin.all, :id, :name %>
<% end %>
这是扇区控制器中的相应操作:
def update
@sector = Sector.find(params[:id])
@sector.admins_id = params[:admins_id]
respond_to do |format|
if @sector.update(sector_params)
format.html { redirect_to @sector, notice: 'Sector was successfully updated.' }
format.json { render :show, status: :ok, location: @sector }
else
format.html { render :edit }
format.json { render json: @sector.errors, status: :unprocessable_entity }
end
end
end
private
def sector_params
params.require(:sector).permit(:title, :admins_id)
end
最后,我在模型中有这些关系:
class Sector < ActiveRecord::Base
has_many :admins, dependent: :destroy
validates :title, presence: true
validates :title, uniqueness: true
end
class Admin < ActiveRecord::Base
belongs_to :sector
end
另外,我可以在 Rails 控制台中创建和分配管理员。
【问题讨论】:
-
基于api.rubyonrails.org/classes/ActionView/Helpers/…,可以试试
f.collection_check_boxes :admin_ids, Admin.all, :id, :name。注意它的ids不是id -
也检查强参数问题:makandracards.com/makandra/…
-
我认为您实际上没有收到
:admins_id的任何内容。从form_for方法获得的参数是:sector,其中:admins_id是嵌套的。试试params[:sector][:admins_id]。 -
以上都试过了。没有任何效果。感谢您的建议。
-
那么你应该提供rails日志来记录当你尝试提交复选框@Haken时会发生什么
标签: ruby-on-rails ruby forms ruby-on-rails-4 checkbox