Я реализую Назначение ролей пользователю. Я реализовал это с помощью многих через ассоциацию. требование говорит, что может быть любое количество ролей для конкретного пользователя. создали User, Role model и связали их с моделью userrole. когда я назначаю роли определенному пользователю, это не сохраняется в моей таблице userrole. и мой код задница следует
//index.html.erb пользовательской модели
Я вызываю страницу назначения роли со следующим кодом index.html.erb, который относится к модели User. Я получаю идентификатор пользователя в URL-адресе new.html.erb модели userrole, поэтому не получается идентификатор пользователя. не моя проблема.
<code><pre>
<%= link_to t('.assign_role', default: t("helpers.links.assign")),
new_user_role_path(user_id: user.id,user_name: user.first_name),
method: :get,
class: 'btn btn-default btn-xs' %>
// new.html.erb
<h1>Assign Roles to <%=params[:user_name ]%></h1>
<%= form_for @user_role, :html => { :class => "form-horizontal user" } do |f| %>
<div class="form-group">
<%= f.label :Assign_Role_1, :class => 'control-label col-lg-2' %>
<div class="col-lg-10" >
<%= f.select(:role_id, Role.all.map{|e| [e.name, e.id]},{ :include_blank => "Please select" }, { class: 'form-control' } ) %>
</div>
<%=f.error_span(:Assign_Role) %>
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<%= f.submit nil, :class => 'btn btn-primary' %>
<%= link_to t('.cancel', :default => t("helpers.links.cancel")),
users_path, :class => 'btn btn-default' %>
</div>
</div>
<% end %>
// Контроллер
class UserRolesController < ApplicationController
def index
@user_role = UserRole.all
end
def new
@user_role = UserRole.new
end
def create
@user_role = UserRole.new(user_role_params)
if UserRole.exists?(user_id: user_role_params[:user_id])
flash[:error] = "User already exists."
redirect_to '/' and return
end
if @user_role.save
flash[:success] = "New UserRole created."
redirect_to @user_role
else
render 'new'
end
end
def edit
end
def destroy
end
def show
@user_role = UserRole.all
end
private
def user_role_params
params.require(:user_role).permit( :role_id,:user_id
)
end
конец
мой стол
create_table "user_roles", force: :cascade do |t|
t.integer "role_id"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["role_id"], name: "index_user_roles_on_role_id"
t.index ["user_id"], name: "index_user_roles_on_user_id"
end
, поскольку я ребёнок в рубине и новорожденный от рельсов, пожалуйста, наведите меня, даже если это глупая ошибка