Ruby on rails 3 Rails 3中的关联

Ruby on rails 3 Rails 3中的关联,ruby-on-rails-3,associations,Ruby On Rails 3,Associations,我有一个应用程序,允许用户添加菜谱,然后选择他们最喜欢的菜谱,在他们的会员区查看。我可以选择一个最喜欢的菜谱,我会获取用户id,菜谱id,并给它一个最喜欢的id 我想做的是将实际配方输出到我的视图(作为最喜欢的),如菜名、原产国等。我可以使用实际配方,但不是最喜欢的配方。我需要使用has_many_to吗 我的模特看起来像这样 使用者 配方 belongs_to :user has_many :ingredients has_many :preperations has_many :favou

我有一个应用程序,允许用户添加菜谱,然后选择他们最喜欢的菜谱,在他们的会员区查看。我可以选择一个最喜欢的菜谱,我会获取用户id,菜谱id,并给它一个最喜欢的id

我想做的是将实际配方输出到我的视图(作为最喜欢的),如菜名、原产国等。我可以使用实际配方,但不是最喜欢的配方。我需要使用has_many_to吗

我的模特看起来像这样

使用者

配方

belongs_to :user
has_many :ingredients 
has_many :preperations
has_many :favourites
宠儿

belongs_to :user
belongs_to :recipe

attr_accessible :user_id, :recipe_id
我的控制器

  @favourites = current_user.favourites
我的帖子链接

 <%= link_to "Add to favorites",  {:controller => 'favourites', :action => 'create', :recipe_id => r.id}, {:method => :post } %>
然后像这样将它们输出到视图

 <% @recipes.each do |r| %>
 <tr>
 <td><%= r.dish_name %></td>
 <td><%= r.country_of_origin %></td>
 <td><%= r.difficulty %></td>
 <td><%= r.preperation_time %></td>
 <td><%= ingredient_names(r.ingredients) %></td>
 <td><%= preperation_steps(r.preperations) %></td>
 <td><%= image_tag r.avatar.url(:thumb)%></td>
 <tr>

所以如果我在视图中这样做

 <li><%= @favourites %></li>
  • 我把它输出了

     <Favourite id: 16, user_id: 8, recipe_id: 21, created_at: "2012-11-07 20:24:39", updated_at: "2012-11-07 20:24:39">]
    
    ]
    
    如果我尝试

     <%= @favourites.dish_name %>
    
    
    
    然后我得到了错误的未定义方法dish\u name

    如何使配方模型的参数显示在视图中。我真的很抱歉,只是无法解决问题,我想这应该很容易吧


    任何受到欢迎的帮助

    最受欢迎的人只不过是维系了这段关系。 您可以通过以下方式访问该配方:

    @favourites.recipe
    

    然后,它将成为一个recipe对象,并包含您的属性,如菜名等。

    收藏夹只是保存关系。 您可以通过以下方式访问该配方:

    @favourites.recipe
    

    这将是一个配方对象,包含您的属性,如dish\u name等。

    您将获得未定义的dish\u name,因为您最喜欢的模型没有此类属性

    @favorites=当前用户。favorites
    返回收藏对象的数组

    在你看来,你会这样做

     <% @favourites.each do |f| %>
       <%= f.recipe %>
     <% end %>
    
    
    

    将显示当前用户最喜爱的所有配方。您可以缩小它的范围,以显示特定的菜谱或其他内容。

    您会得到未定义的菜名,因为您最喜欢的型号没有此类属性

    @favorites=当前用户。favorites
    返回收藏对象的数组

    在你看来,你会这样做

     <% @favourites.each do |f| %>
       <%= f.recipe %>
     <% end %>
    
    
    

    将显示当前用户最喜爱的所有配方。你可以缩小它的范围来显示一个特定的配方或什么。Favorites是一个数组,是吗?然后,您必须在@Favorites中循环,并分别处理每个元素:

    <% @favourites.each do |favorite| %>
      <%= favorite.recipe.dish_name %>    
    <% end %>
    

    @Favorites是一个数组,是吗?然后,您必须在@Favorites中循环,并分别处理每个元素:

    <% @favourites.each do |favorite| %>
      <%= favorite.recipe.dish_name %>    
    <% end %>
    
    
    
    我明白你的意思了,因为我必须从配方模型中获取参数,谢谢你的澄清,但是我现在得到了未定义的方法配方。。。你建议的是视图是吗?没错。我明白了,它之所以给你一个未定义的方法配方,是因为你从当前用户那里得到了什么。你需要做的是遍历数组,然后你就可以做你想做的事情了。让我更新我的回答我明白你的意思了,因为我必须从配方模型中获取参数,谢谢你澄清,但是我现在得到了未定义的方法配方。。。你建议的是视图是吗?没错。我明白了,它之所以给你一个未定义的方法配方,是因为你从当前用户那里得到了什么。你需要做的是遍历数组,然后你就可以做你想做的事情了。让我更新我的回答我明白你的意思了,因为我必须从配方模型中获取参数,谢谢你澄清,但是我现在得到了未定义的方法配方。。。你建议的是视图是吗?我明白你的意思,因为我必须从配方模型中获取参数,谢谢你澄清,但是我现在得到了未定义的方法配方。。。你所建议的是景观是吗?