我目前正在學習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)'而不是檢查一個類別。 –