2011-01-18 12 views
4

私はRfq contollerを作成しています。オブジェクトを保存または更新するときに、新しいRfqを更新しています。 Rfqを保存した後にquote_priceカラムのparams [:quotes]で引用符でline_itemsテーブルを更新したいと思います。Railsモデルからコントローラのパラメータを後で保存する方法

私はその混乱は知っていますが、誰かがヒントを得ているはずです。

+0

あなたは' paramsはに直接アクセスすることができましたか? – Dogbert

+0

どのように例を挙げて説明できますか? –

+4

'params'はモデルから直接アクセスできないと思います。 –

答えて

2

正直なところ、paramsを扱っている場合は、モデルとコントローラの責任を混乱させないように、コントローラのロジックをコントローラに組み込むことをお勧めします。 コントローラである

は、:

if @foo.save 
    # Update line_items using params[:quotes] 
end
1

私はあなたが主な目的とすべての子オブジェクトの両方を節約する1つのフォームを持つことができるようにしたいと思います。そうでない場合は、無視してください。

レールで

、これは "nested_attributes"

という名前で、あなたのモデルにこれを追加します:フォームビューで

accepts_nested_attributes_for :quotes 
# assuming you have 
has_many :quotes 

、その後:

<% form.fields_for :quotes do |child_form| %> 
    <%= child_form.text_field :name %> 
<% end %> 

がこれをチェックしてくださいRyanのブログで:Nested Attributes

11

モデル内でハッシュ値がである場合、MVCの原則に違反しています。モデルは引数で単独で立つべきです。あなたがしようとしている場合は次の操作を行う:

# controller 
Model.foo 

# model 
def foo 
    params[:bar].reverse! 
end 

あなたが代わりに次の操作を行います。[:引用符] after_saveブロックから `

# controller 
Model.foo(params[:bar]) 

# model 
def foo(foobar) 
    foobar.reverse! 
end 
関連する問題