2

私はブロブとして私のコントローラ上で私のnewメソッドを取得したいが、それを保存する前にパースしたり、入力を混乱させたりしたいと思う単一のテキストエリア入力がある。保存する前にRails 3でネストされたモデル値を手動で設定するにはどうすればよいですか?

は私が任意にその属性は、フォームから直接来ていません

@post.user_id = current_user.id 

のようなものを言うことによって、モデルの属性を設定することができます知っています。私のここでの問題は、ネストされたモデルの値を設定したいということです。

のは、協会がpost has_many commentscomment belongs_to post

あるとしましょうpost.commentsがちょうどコメントのように見えるハッシュにセットされますでしょうか? Like

@post.comment = {'comment' => 'foo'} 

または何か類似した画像ですか?

ありがとうございました。

答えて

1

フォームのFORSを入れ子にしている場合は、あなただけを経由してあなたのparamsからのコメント値を取得することができます。

@post.comment.update_attributes(params[:comment]) 

場合は(あなたががあなたの#NEWにpost.build_comment @と呼ばれている必要があります)

{'comment' => {:message => 'foo', :author => current_user}} 

をまたはその

ような何か:あなたは、あなたがそうのようにコメントのハッシュ「コンテナ」を必要とする、あなたのコントローラでそれらを設定するために探しています
2

通常、私はこの種のものを乾かして、before_saveコールバックでコメントモデル自体の解析を処理することをお勧めします。

class Comment < ActiveRecord::Base 
    before_save :parse_comment 

    protected 
    def parse_comment 
    self.comment = ... 
    end 
end 

コールバックがうまくいかない場合は、@ corrodedの提案が有効です。

関連する問題