Ruby on rails 3 通过指向作用域结果的链接显示对象属性

Ruby on rails 3 通过指向作用域结果的链接显示对象属性,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我在这里似乎有点糊涂,所以澄清比这里需要的任何东西都重要 我有一个简单的菜谱应用程序,可以让用户上传菜谱,我还有一个部分列出了所有甜点类菜谱 这个类方法(实际上只是一个范围)给出了所有具有甜点类别的食谱 def self.dessert_recipes self.where(:category => "Desserts") end 在控制器中,我可以调用此数据以在视图中显示 @desserts = Recipe.dessert_recipes 然后在我看来,我可以看到有甜点类别的食谱

我在这里似乎有点糊涂,所以澄清比这里需要的任何东西都重要

我有一个简单的菜谱应用程序,可以让用户上传菜谱,我还有一个部分列出了所有甜点类菜谱

这个类方法(实际上只是一个范围)给出了所有具有甜点类别的食谱

def self.dessert_recipes
self.where(:category => "Desserts")

end
在控制器中,我可以调用此数据以在视图中显示

@desserts = Recipe.dessert_recipes
然后在我看来,我可以看到有甜点类别的食谱的名称

 <% @desserts.each do |r| %>
<p><%= link_to r.dish_name, recipe %></p>
  <p> <%= r.author %></p> # this doesnt exsist yet but it will
 <% end %>

我猜我无法访问整个配方,因为我试图在不同的实例类中访问它?关于这一点的一些建议将有助于我了解正在发生的事情

谢谢海象先生的回答


链接到(r.dish\u name,r)

这大部分看起来都不错-我希望它是
链接到(r.dish\u name,r)
,而不是你拥有的,但除此之外,我认为这没有什么错。到底出了什么问题?获取未定义的方法recipe,因为我只想获取recipe的id以显示所有属性,感谢您的回答,稍后将尝试。。我能问一下为什么只有r吗?是因为我要通过我的块传递r吗?是的,它只是
r
因为你要传递给块-
r
是配方对象,
Recipe
是未定义的。这也可能是你犯错误的原因。
 <b><%= @recipe.dish_name %></b>
 <b><%= @recipe.catgegory %></b>
 @recipe = Recipe.find(params[:id])