私は本当にレールで新しくなっていますので、私はそれを見ることができない場合は私を許してください。#<User :: ActiveRecord_Relation:0x007f1bf8c2fd60>のための未定義メソッド `to_key '
私は、個々のユーザーの権限を編集しようとしていますし、私はのform_forにこのエラーを取得しています:
undefined method `to_key' for #<User::ActiveRecord_Relation:0x007f1bf8c2fd60>
私はstackoverflowの上の他の質問には何を見ているから、あなたが呼び出すしようとすると、これは通常起こりますフォームのコレクションですが、そうではありませんか?
ビュー:
<div class="n-container">
<tr-form data-riot riot-tag="tr-form">
<%= form_for(@user) do |f| %>
<section>
<div class="w-container">
<h1>User permissions</h1>
<% @permissions.each do |permission| %>
<%= check_box_tag 'permission_ids[]', permission.id %>
<div>
<%= permission.description %>
</div>
<% end %>
</div>
</section>
<section>
<div class="f-controls align-right">
<%= f.submit class: "btn fill blue", value: "Submit" %>
</div>
</section>
<% end %>
</tr-form>
</div>
users_controller:
class UsersController < ApplicationController
def user_params
params.require('user').permit(
permissions: []
)
end
def permissions
@user = User.where(id: params[:user_id])
@permissions = Permission.all
end
end
路線:
resources :users do
get 'permissions'
post 'permissions'
end
は、事前にありがとうございます!
http://stackoverflow.com/questions/29005090/how-to-solve-undefined-method-to-key-for-bookactiverecord-relation0x007fb?rq=1:plicitlyあなただけのユーザーが必要であることを言います –
あなたの@userは 'User'インスタンスではなく、関係にあるようです。 –
' User.where'はコレクション(= 'ActiveRecord :: Relation')を返します。最初のものを得るために 'first'を呼び出します。代わりに' User.find'を使います。 – nathanvda