0

問題はとても単純に思えますが、私はそれを修正できないようです。明らかな何かが欠けているに違いありませんが、何か助けていただければ幸いです!

表示されるエラー メッセージ:

undefined method `discussions_path' for #<#<Class:0x000001032e90d8>:0x000001030f1168>

ルート ファイル:

resources :forums do
  resources :discussions
end

Discussions/_form.html.erb ファイル:

<%= form_for [@forum, @discussion] do |f| %>  
 <%= f.error_messages %>
 <p>  
  <%= f.label :name %><br />  
  <%= f.text_field :name %>  
 </p>
 <p><%= f.submit "Submit" %></p>  
<% end %>

ディスカッション コントローラの新しいアクション:

def new
  @forum = Forum.find_by_permalink(params[:id])
  @discussion = Discussion.new
end

これは私が今得ている完全なエラーです(ターミナルで):

Started GET "/forums/general-chat/discussions/new" for 127.0.0.1 at 2012-04-14 18:35:28 +0100
Processing by DiscussionsController#new as HTML
Parameters: {"forum_id"=>"general-chat"}
Forum Load (1.6ms)  SELECT "forums".* FROM "forums" WHERE "forums"."permalink" IS NULL LIMIT 1
Rendered layouts/_content_full_start.html.erb (0.0ms)
Rendered discussions/_form.html.erb (574.4ms)
Rendered discussions/new.html.erb within layouts/application (575.9ms)
Completed 500 Internal Server Error in 581ms
4

1 に答える 1

2

form_forネストされたリソースの場合、フォーラムとディスカッションで配列を渡す必要があります。たとえば@forum、コントローラーで設定してから、ビューで次を使用します。

<%= form_for [@forum, @discussion] do |f| %>

Railsのドキュメントから:

If your resource has associations defined, for example, you want to add comments
to the document given that the routes are set correctly:
<%= form_for([@document, @comment]) do |f| %>
...
<% end %>
Where @document = Document.find(params[:id]) and @comment = Comment.new.
于 2012-04-14T15:34:13.400 に答える