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

【问题讨论】:

你能发布你的控制器代码吗? 你现在可以在上面看到了! 试试这个&lt;%= best_in_place user, :role_id, :type =&gt; :select, :collection =&gt; @users.map |i| [i.id, i.name] %&gt; 嘿,你的代码几乎是完美的。只需将@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 到多个关联的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate的一对多关联关系

JPA中实现单向一对多的关联关系

MyBatis关联查询,一对多关联查询

hibernate的映射之四(多对多双向关联)

-------------------------------用MyBatis处理表与表之间的关联关系----------------------------------

Mybatis—多对一和一对多