簡體   English   中英

Rails嵌套路由的奇異​​資源

[英]Rails Nested Route For Singular Resource

我在單一資源上有一個嵌套路由

map.resource :account, :controller => "users" do |page|
  page.resources :feeds
end

我正在嘗試制作一個表單來添加Feed。 我從這開始......

<% form_for @feed do |f| %>
undefined method `feeds_path' for #<ActionView::Base:0x2123174>

所以我試試

<% form_for [current_user,@feed] do |f| %>
undefined method `user_feeds_path' for #<ActionView::Base:0x20b3e00>

我想這是因為將它從“用戶”重命名為“帳戶”? 所以我試過了

<% form_for account_feeds_path(@feed) do |f| %>
`@/account/feeds.%23%3Cfeed:0x22ea5c0%3E' is not allowed as an instance variable name

不確定該錯誤意味着什么。 所以我已經使用了這樣做:

<% form_for @feed, :url=>{:action=>:create} do |f| %>

這真的是最好的方式嗎? 換句話說,在這種情況下是否無法使用命名路由?

我想你想做的是

<% form_for [:account, @feed] do |f| %>

當@feed是新記錄時,form_for將使用帶有POST的account_feeds_path,當@feed不是新記錄時,將使用PUT將account_feed_pa​​th(@feed)用於。

我認為你在這里對嵌套(+命名)路由和奇異資源感到困惑。 我猜你正在嘗試做的是擁有一個屬於用戶(帳戶)的單一feed資源,對吧?

如果是這樣,您現有的路線

map.resource :account, :controller => "users" do |page|
  page.resources :feeds
end

也許應該是

map.resources :accounts, :controller => "users" do |account|
  account.resource :feed
end

請注意, accounts是多個資源,但Feed是單數。 這為您的帳戶(即您的用戶)提供了通常的RESTful路線......但這是一個單一的“Feed”資源。 您無需參考Feed的ID - 但通常只需使用@ account.feed即可

使用rake routes向您顯示此創建的路由的完整列表。

例如, account_feed_path(@account)將為您提供Feed的顯示頁面。

因此,路徑使您能夠使用表單助手,如下所示:

<% form_for :feed, account_feed_path(@account) do |f| %>

<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM