Ich bin wirklich neu auf Schienen, also bitte vergib mir, wenn ich es nicht sehen kann.undefinierte Methode `to_key 'für # <Benutzer :: ActiveRecord_Relation: 0x007f1bf8c2fd60>
Ich versuche, die Berechtigungen für jeden einzelnen Benutzer zu bearbeiten und ich erhalte diesen Fehler in form_for:
undefined method `to_key' for #<User::ActiveRecord_Relation:0x007f1bf8c2fd60>
Von dem, was ich in anderen Fragen auf Stackoverflow gesehen habe, dies in der Regel passiert, wenn Sie zu anrufen versuchen eine Sammlung in einer Form, aber das ist nicht der Fall?
Ansicht:
<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
Routen:
resources :users do
get 'permissions'
post 'permissions'
end
Vielen Dank im Voraus!
http://stackoverflow.com/questions/29005090/how-to-solve-undefined-method-to-key-for-bookactiverecord-relation0x007fb?rq=1 –
Ihr @user scheint eine Relation zu sein, keine 'User'-Instanz –
'User.where' gibt eine Auflistung zurück (=' ActiveRecord :: Relation'). Rufen Sie 'first' an, um das erste oder ideomatic zu bekommen: benutzen Sie stattdessen' User.find'. – nathanvda