私はフォームを使用して、私のユーザーのユーザーロールを作成しようとしている、とは設定にhas_many:経由レール上のフォーム3
<%= form_for @user do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :username %><br />
<%= f.text_field :username %>
</p>
<p>
<%= f.label :email, "Email Address" %><br />
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation, "Confirm Password" %><br />
<%= f.password_field :password_confirmation %>
</p>
<% # f.select :roles, Role.all.map {|r| [r.title]} %>
<% Role.all.each do |role| %>
<div>
<%= check_box_tag :role_ids, role.id, @user.roles.include?(role), :name => 'user[role_ids][]' -%>
<%= label_tag :role_ids, role.title -%>
</div>
<% end -%>
<p><%= f.submit (@user.new_record? ? "Sign up" : "Update"), :id => :sign_up %></p>
<% end %>
これは私が私のモデルを持っている団体です
class user < ActiveRecord::Base
has_many :assignments
has_many :roles, :through => :assignments
end
class assignment < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
class role < ActiveRecord::Base
has_many :assignments
has_many :users, :through => :assignments
end
最初に紹介したフォームを使用してユーザーと役割の間で課題を作成する方法は何ですか?
def create
@user = User.new(params[:user])
if @user.save
session[:user_id] = @user.id
render :action => 'dashboard'
else
render :action => 'new'
end
end
私は自分のフォームを送信すると、私はエラーを取得する:
私は次のようになります私のユーザーのコントローラ内のアクションを作成
のActiveRecord ::がUserController#でAssociationTypeMismatchは(
役割を作成する# 70331681817580)expected、got String(#70331650003400)
Request
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"WHpOW+DmymZ2pWmY9NHSuodf2vjyKdgMNZcc8NvCNa0=",
"user"=>{"username"=>"ioio",
"email"=>"[email protected]",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"roles"=>["2"]}, #### <<< ==== This is the checkbox that I selected for this request.
"commit"=>"Sign up"}
何か助けを歓迎します。
解決方法はありますか?修正は私のために働くので、あなたの問題も解決すれば私は不思議です。 – miked