我目前正在学习Ruby on Rails,而且我陷入了一件非常简单的事情。我已经试图谷歌它(或查看它在这里),但我找不到正确的答案(由于我的RoR开始它可能会用错误的术语搜索)。Ruby on Rails:将不同控制器的动作包含到另一个控制器的索引视图中
我在一个小的学习项目的工作,列出不同的项目(items_controller)。这些项目中的每一个都属于一个类别。但因为我希望用户创建,更新或删除一个类别,我创建了一个categories_controller。控制器和视图都工作正常,但我想包括我的项目控制器的索引视图(这也是root_path)上的每个项目的类别。在这里,我被卡住了(使用代码和它背后的逻辑)。做这个的最好方式是什么?
不知怎的,我设法类别名称进入items_controller的edit.html.erb形式,但我真的不知道如何:
items_controller:
def edit
@item = Item.find(params[:id])
@categories = Category.all.map{ |c| [c.name, c.id] }
end
edit.html .erb(这实际上是在_form.html.erb和edit.html.erb渲染):
<%= simple_form_for @item, :html => { :multipart => true } do |f| %>
<%= f.select :category, @categories %>
<%= f.input :title %>
<%= f.input :url %>
<%= f.button :submit %>
<% end %>
谢谢!已经有了,但我误解了错误。所以我包含了一个“if item.category”,现在它可以工作。 –
@ChristophBerger你可以使用'try()'方法看起来像:'item.try(:category).try(:name)'而不是检查一个类别。 –