我想保留我的嵌套資源在其父項的上下文中。這裏是我的代碼如下:Rails:限制嵌套的資源路徑
的routes.rb:
resources :categories do
resources :subcategories
end
遷移:
create_table "categories" do |t|
t.string "name"
end
create_table "subcategories" do |t|
t.string "name"
t.integer "category_id"
end
車型:
class Categories < ActiveRecord::Base
has_many :subcategories
end
class Subcategories < ActiveRecord::Base
belongs_to :category
end
^h ERE的我的資料:
Category
id
:[1,2]
Subcategory
id
:[1..10],category_id
:1
Subcategory
id
:[11..20],category_id
:2
對於我的路徑,/category/1/subcategory/[1..10]
工作得很好。但是,如果我直接編輯網址到/category/1/subcategory/[11..20]
,即使它們在category id: 2
下,子類別仍顯示。
我必須在我的代碼中丟失一些東西。有些事告訴我,這不是它應該如何工作。如果您輸入的subcategory
id
與它的category_id
沒有關聯,它應該會報錯。
我該如何解決這個問題?
我會試試看。但即使如此,我不確定這是否解決了直接編輯url的問題,是嗎? – leejay100 2015-04-05 00:31:40
@ leejay100:事實上,它確實如此。你可以把它想象成一個檢查鏈:比方說,uri是'/ category/1/subcategory/15'。所以,起初,這個方法找到所有的類別都是'id = 1'(正如你所看到的,你只有一個)。然後找到它的所有子類別('[1..10]'),然後嘗試在該集合中找到具有'id = 15'的子類別,但沒有它,因此沒有任何顯示。 – potashin 2015-04-05 00:37:27
啊,我明白了。我只是把這個放在show方法中。謝謝@notulysses – leejay100 2015-04-05 00:45:58