2009-04-17 9 views
0

私はlink_toを通してベンダクラスの.idを含むアクションを1つ持っています。RubyのURLからform_tagにIDを渡すにはどうすればよいですか?

レビュー用の別のコントローラのnew()の変更であるアクションは、URLのID値とセッション[:user_id]の両方をデータベースに渡す必要があります。

  • vendor.idの値を取得するにはどうすればよいですか?代わりにURLを通過させて代わりにフラッシュに入れることはできますか?

  • 私はセッション[:user_id]を渡すために隠し値を使用しますか?

答えて

1

コントローラーアクションからparams[:id]とアクセスできるとしますか?その場合は、ビューでparams[:id]という名前でアクセスできます。同上はsession[:user_id]です。

を編集してください:私はあなたの質問に誤解している可能性があります。あなたはフォームを介してIDをポストすることについて質問していますか?または、おそらくURLにIDを持っていない?

+0

はい、私はIDを新しいものに渡しましたが、フォームを通過していませんでした。私は隠された価値を使うべきですか?それは特にそうではないが、人々が提案しているようだ... – AFG

0

コントローラ間でパラメータを渡す場合は、通常、パラメータとして渡す必要があります。あなたは(ここでは、それはだSHOW)にリンクしているアクションで

<%= link_to "Link to other controller", other_path(@other, :some_param => param_value) %> 

、あなたがアクセスできるようになります:[:some_param]のparamsとしてsome_param。

フォームから、非表示フィールドを追加します(ユーザーが何かを送信できるので、後で有効かどうかを確認している限り)。

どちらの方法でも、セッション状態を保存するためにフラッシュを使用しないでください。フラッシュはユーザーメッセージ専用です。

+0

has_many関係(ベンダーhas_manyレビューなど)がある場合、私はまだreview_pathを使用して、vendor_id => @ vendor.idを渡すことができますか? – AFG

+0

は、私は作成私が提出コール時にそれから推測提出フォームにそれらをとる新しいコントローラにリンクしており、私はエラーを取得: のActiveRecord :: RecordNotFoundは(IDなしベンダーを見つけることができませんでした): それはそう新しいものから作成するときにIDを失うようなものですか? – AFG

関連する問題