5

単一のリソースにネストされたルートがあります

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

フィードを追加するフォームを作成しようとしています。私はこれから始めます...

<% 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| %>

それは本当に最善の方法ですか?つまり、この状況で名前付きルートを使用する方法はありませんか?

4

2 に答える 2

6

あなたがやりたいことは

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

form_for は、@feed が新しいレコードの場合は POST で account_feeds_path を使用し、@feed が新しいレコードでない場合は PUT で account_feed_pa​​th(@feed) を使用しようとします。

于 2009-10-29T18:13:16.650 に答える
1

ここで、ネストされた (+named) ルートと単一のリソースについて混乱していると思います。あなたがやろうとしているのはfeed、ユーザー (アカウント) に属する単一のリソースを持っていることだと思いますよね?

もしそうなら、あなたの既存のルート

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

おそらくあるはずです

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

は複数のリソースですaccountsが、フィードは単数形です。これにより、アカウント (つまりユーザー) に通常の RESTful ルートが提供されますが、単一の「フィード」リソースが提供されます。フィードの ID を参照する必要はありませんが、通常は @account.feed から作業します。

rake routesこれが作成するルートの完全なリストを表示するために使用します。

account_feed_path(@account)たとえば、フィードの表示ページが表示されます。

したがって、パスを使用すると、次のようにフォーム ヘルパーを使用できます。

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

<% end %>
于 2009-07-21T07:19:39.427 に答える