rails:3474
From: yamada masaki <masaki@h...>
Date: Wed, 8 Sep 2010 17:35:04 +0900
Subject: [rails:3474] Re: form_forの引数について
<% form_for [@comment.entry, @comment] do |f| %> でできるとおもいます new のときに Comment.new(:entry_id => params[:entry_id]) わすれずに むしろ [:entry, @comment] だと new の時もダメな気がするけど・・・ 2010年9月8日16:12 Ayumu Aizawa <ayumu.aizawa@g...>: > あいざわです > > すごく基本的な質問なのですが、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/ > -- 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... ]