[前][次][番号順一覧][スレッド一覧]

rails:3473

From: Ayumu Aizawa <ayumu.aizawa@g...>
Date: Wed, 8 Sep 2010 16:12:12 +0900
Subject: [rails:3473] form_forの引数について

あいざわです

すごく基本的な質問なのですが、form_forの引数に関する質問です。

<動作環境>
$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
$ rails -v
Rails 2.3.8

<状況>
routes.rb、モデルEntry、モデルCommentを下記のように設定し、
http://localhost:3000/entries/1/comments/1
のようにCOMMENTSテーブルのデータにアクセスしています。

$ cat config/routes.rb
ActionController::Routing::Routes.draw do |map|
  map.resources :entries, :has_many => :comments
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end
$ cat app/models/entry.rb
class Entry < ActiveRecord::Base
  has_many :comments
end
$ cat app/models/comment.rb
class Comment < ActiveRecord::Base
  belongs_to :entry, :counter_cache => true
end
<結果>
新規にCommentオブジェクトを登録したり、更新したりしようとしたときにviewでform_for
登録画面のビューで、form_forメソッドに渡す引数を
<% form_for @comment do |f| -%>
とすると、
undefined method `comments_path' for #<ActionView::Base:0xb6cc6e90>
と表示され、
<% form_for [:entry, @comment] do |f| -%>
とすると正常に登録ができるようになりました。

更新画面で同じようにすると、
undefined method `entry_comment_path' for #<ActionView::Base:0xb6d6ffcc>
というエラーになったので、
<% form_for [:entry, @comment], :url => {:action => 'update'} do |f| %>
に変更したところ正常に動きました。

しかし、この差があるため登録画面と更新画面のフォームをパーシャルに出すことができません。
親子関係にあるリソースの子の方へのアクセスをもうちょっと上手にやる方法があるのではないかと
おもっているのですが、こういう場合のよい書き方を教えてください。

----
Ayumu AIZAWA

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

->    3473 2010-09-08 09:12 [ayumu.aizawa@g...   ] form_forの引数について                  
      3474 2010-09-08 10:35 ┗[masaki@h...         ]