Best_in_place 集合 1 到多个关联
Posted
技术标签:
【中文标题】Best_in_place 集合 1 到多个关联【英文标题】:Best_in_place collection 1 to many association 【发布时间】:2014-09-04 01:41:24 【问题描述】:我正在尝试使用 best_in_place 直接在索引页面上控制我的用户管理。但是到现在我还没有选择角色。
我的模型如下所示:
class User < ActiveRecord::Base
belongs_to :role
before_create :set_default_role
def set_default_role
self.role ||= Role.find_by_name('Guest')
end
end
class Role < ActiveRecord::Base
has_many :users
has_and_belongs_to_many :permissions
accepts_nested_attributes_for :users, :permissions
end
到目前为止,我所做的是尝试在集合选择上选择外键 role_id
,但我无法在我的选择下拉列表中看到现有角色的名称。
<td><%= best_in_place user, :role_id, :type => :select, :collection => "???" %></td>
希望有人能提供帮助。
最好的问候!
编辑:user_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :update, :destroy]
def index
@users = User.all
end
def show
end
def update
@user.update_attributes(user_params)
respond_with @user
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:role_id)
end
end
【问题讨论】:
你能发布你的控制器代码吗? 你现在可以在上面看到了! 试试这个<%= best_in_place user, :role_id, :type => :select, :collection => @users.map |i| [i.id, i.name] %>
嘿,你的代码几乎是完美的。只需将@users.map 替换为 Role.all.map 因为我想选择角色。但现在它工作正常。添加它作为答案,我会评价它。谢谢!
嗯,是的,你是对的。我将添加它作为答案。
【参考方案1】:
这应该适合你
<%= best_in_place user, :role_id, :type => :select, :collection => Role.all.map |i| [i.id, i.name] %>
更多信息here
【讨论】:
以上是关于Best_in_place 集合 1 到多个关联的主要内容,如果未能解决你的问题,请参考以下文章
-------------------------------用MyBatis处理表与表之间的关联关系----------------------------------