2011-06-10 24 views
6

これはおそらく非常に簡単な修正ですが、まだ答えは見つかりませんでした。URLにパラメータを渡すRuby on Rails

私のアプリケーションは注文とタスクを持っています。注文には多くのタスクがあります。

<%= link_to "New Task", new_task_path(:order_id=> @order.id) %> 

URLを示しています:私はちょうどこれを抽出し、それを使用する方法がわからない

/tasks/new?order_id=1 

ユーザーは、show順ビューで新しいタスクをクリックすると、それはorder.idを渡します私の形で?私は試しました:

<%= f.text_field :order_id, :value => @order_id %> 

しかし、それは動作していません。

+0

':value => @ order_id'の入力ミスです。それは ':value => @ order.id'であってはなりませんか? – spektom

答えて

2

あなたcan do

<%= f.text_field :order_id, :value => params[:order_id] %> 

代わりには、in the controllerparamsで)値をキャプチャし、そこ@order_idに割り当てます。

+0

華麗で、おいしかった!! Jx –

+1

しかし、それは隠しフィールドにしてください:http://apidock.com/rails/ActionView/Helpers/FormHelper/hidden_​​field – Jakub

+0

すでに完了:) –

-1

これは間違っているのですが、これは大事な設定であるレール上での大きな取引です。注文が多くのタスクを持っている場合

することは、あなたのルートは次のようになります。

/orders/:order_id/tasks/new 

そして、あなたのルートはthusly構成する必要があります。

resources :orders do 
    resources :tasks 
end 

あなたは[ほとんど]自分自身を見つけることはありませんクエリ文字列にレコードIDを渡します。実際、Railsではクエリ文字列を使用することはほとんどありません。

+7

ネストしたリソースが必ずしも適切であるとは限りません。一部の人々は、決して適切ではないと思っていますが、私はここでその議論を開始しません。あなたが*時には*適切であると思っても、注文は仕事への関連性ではなく所有権であるという疑問から100%明らかではありません。私はこれが良い*オプション*であることに同意しますが、あなたの他のコメントを引用するために、他のオプションを "絶対に**間違った方法**"と呼ぶことに反対します。たとえば、「注文」がタスクのオプションのフィールドであるとします。 –

関連する問題