0

モデルに関連付けられていないフィールドを作成する方法を知りたいのですが、フィールドが必要な唯一の理由は、フィールドに対して実行するアクションを決定することです。

モデル記事があり、新しい記事を作成するときに、0、1、2 を持つ非表示フィールドが必要であり、新しいコントローラーで、パラメーターが 0 に等しいかどうかを確認し、この設定を行うとします。のロジックまたは 1 の場合、このロジックのセット。

ありがとうございます。アクションごとに一連のアクションを定義してもうまくいかないこともわかっています。

4

3 に答える 3

2

フォームでは、モデルに直接関連付けられていない非表示フィールドと表示フィールドの両方を宣言できます。フォームを送信すると、フォームのアクションでparams、モデルに関連しない属性を操作できます。

フォーム フィールドを宣言するときは、 、、および質問に関して. で終わる_tagものを使用できます。例:email_field_tagradio_button_taghidden_field_tag

<% hidden_field_tag 'this_is_hidden' %>

試してみて、何がアクションに入るかを調べてください: raise params.inspect. paramsそうすることで、モデルに関係のない、宣言した属性のキーが含まれるようになったことに気付くでしょう(属性など:this_is_hidden) 。

于 2013-03-16T18:21:13.167 に答える
1

hidden_​​field_tag でやってみてください。(推奨: form タグ内の送信ボタンの直前に配置してください。)

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-hidden_​​field_tag

hidden_field_tag 'decide', '0'

次に、コントローラーの新しいアクションで、params ハッシュ内でそれをキャッチし、params[:decide].to_i と比較できます。

于 2013-03-16T18:13:51.890 に答える
0

最も簡単な方法は、前述の @Zippie のような非表示フィールドを持つことです。ただし、エンド ユーザーが非表示フィールドの値を変更し、プログラムが異なる動作をする可能性があるため、いくつかのリスクがあります。

私が個人的に信じているのは、渡されたパラメーターから特定するためのある種の方法論を持つことです

Ex: if it is a new object then it should go to method A etc... 

そうすれば、エンドユーザーはワークフローを変更する機会がありません。

于 2013-03-16T18:38:16.920 に答える