我正在尝试按照本教程实现 HABTM 复选框: http ://www.justinball.com/2008/07/03/checkbox-list-in-ruby-on-rails-using-habtm/
虽然一切似乎都运行良好,但更新并未保存到我的数据库中。我的控制器如下所示:
class UserrolesController < ApplicationController
before_action :set_userrole
def edit
@projects=Project.all
end
def update
params[:userrole][:project_ids] ||= []
@userrole = Userrole.find(params[:id])
if @userrole.update_attributes(userrole_params)
flash[:notice] = "Settings have been saved."
redirect_to edit_userrole_url(@userrole)
else
flash.now[:error] = @userrole.errors
setup_form_values
respond_to do |format|
format.html { render :action => :edit}
end
end
end
private
def set_userrole
@userrole = Userrole.find(params[:id])
end
def userrole_params
params.require(:userrole).permit(:name, :project_ids)
end
end
我的 _form.html.erb 是这样的:
<%= form_for(@userrole) do |f| %>
<% if @userrole.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@userrole.errors.count, "error") %> prohibited this person from being saved:</h2>
<ul>
<% @userrole.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="center">
<div class="field">
<%= f.label :Name %>
<%= f.text_field :name %>
</div>
<ul class="checkbox-list">
<% @projects.each do |project| -%>
<li><%= check_box_tag "userrole[project_ids][]", project.id, userrole_edits_project?(project) -%> <%= project.name -%></li>
<% end -%>
</ul>
<div class="actions">
<%= f.submit "Speichern", class: "btn btn-primary" %>
</div>
</div>
<% end %>
所以我做了教程中的所有事情,:name 保存没有任何问题,但 id 没有保存到数据库中。没有错误信息。有人知道可能出什么问题吗?也许某处缺少一些许可?