2017-04-02 55 views
0

我目前正在學習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 %> 

回答

0

如果您要包括的每個項目的類別,你需要指定的C哪一列ategories表您想要顯示。示例:名爲name的列:

<% @items.each do |item| %> 
<%= item.category.name %> 
<% end %> 
+0

謝謝!已經有了,但我誤解了錯誤。所以我包含了一個「if item.category」,現在它可以工作。 –

+0

@ChristophBerger你可以使用'try()'方法看起來像:'item.try(:category).try(:name)'而不是檢查一個類別。 –

相關問題