【问题标题】:::ActiveRecord_Associations_CollectionProxy:0x6b5e8a0::ActiveRecord_Associations_CollectionProxy:0x6b5e8a0
【发布时间】:2015-03-03 16:45:19
【问题描述】:

我有用户并且有商店模型。

在用户模型中

class User < ActiveRecord::Base
	has_many :shops
	validates :shops, presence: true
end

店内模式

class Shop < ActiveRecord::Base
	belongs_to :user
	validates :user_id, presence: true
end

在用户控制器中

def show
    @shop = User.find(params[:id]).shops 

  end

在用户/节目中

<%= render 'user' %>

<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>

 <hr color="blue">
 

 <%= @shop%>

#&lt;Shop::ActiveRecord_Associations_CollectionProxy:0x6b5e8a0&gt; 

输出是这样的。不显示用户商店。 我想显示属于该用户的商店。

我可以通过运行 User.find(1).shops 在 Rails 控制台上找到它们 但不在应用中

【问题讨论】:

  • 用户模型有许多个商店。那么,您想观看哪个一个用户节目(在您的@shop 变量中)??

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

由于用户has_many Shops,您需要对其进行迭代。

# UserController
def show
  @user = User.find(params[:id])
end

# users/show
<%= render 'user' %>

<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
<hr color="blue">

<% @user.shops.each do |shop| %>
  <%= shop.name %>
<% end %>

【讨论】:

    【解决方案2】:

    看起来您并没有为用户遍历每个商店,而只是在视图中显示用户。所以你会想要这样的东西:

    #controller
    @shops = User.find(params[:id]).shops
    
    #view
    <% @shops.each do |shop| %>
      <%= shop %>
    <% end %>
    

    【讨论】:

    • 感谢您的回复。但结果#<0x5988600>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多