2011-09-13 8 views
1

私は比較的新しいレールです。私は、特定のコントローラを呼び出すために、UIコンポーネントのような部分を使用しています。ここに私がshared/post_button.html.erbに持っているものがあり、コントローラーとアクションやパスのようなパーシャルをレンダリングしながらparamsを渡します。form_tagでオブジェクトを渡すRuby on Rails

<% 
path = "" if !path 
action = "" if !action 
controller = "" if !controller 
values = {} if !values 
%> 
<%= form_tag(path, :controller => controller, :action => action, :method => "post") do %> 
    <%= hidden_field_tag(:values, values) %> 
    <%= submit_tag label %> 
<% end %> 

私はDBにして特定のレコードを掲示するより安全な方法だった考え出したので、私は(代わりに変数を渡すのlink_toの)形式を使用してPOSTを経由して、特定のコントローラを呼び出すためにこの方法を使用しています。コメントは、これを行うためのより良い方法や構文があるかどうかを私に知らせてくれます。

私がここでやろうとしているのは、コントローラー側で受け取るすべての種類の値を含むvaluesオブジェクトを渡す機能です。現時点では、値タグは機能していないようです。コントローラにオブジェクト/値を渡すにはどうすればいいですか?それをURLに追加する必要がありますか?私がこの部分を使用している方法では、時にはURLを渡さずにコントローラとアクション変数を渡すことはありません。どうすれば値を渡すことができますか?

答えて

1

このようなものをお探しですか?

<%= form_tag(path, :controller => controller, :action => action, :method => "post") do %> 
    <% values.each_pair do |k,v| %> 
     <%= hidden_field_tag(k, v) %> 
    <% end %> 
    <%= submit_tag label %> 
<% end %> 

値ハッシュの各キー/値のペアを繰り返し処理し、個別のパラメータとして送信します。

+0

はい、意味があります。ありがとう! – alik