0

link_to を使用して、コントローラーのアクションに情報を送信しようとしています。

リンクは次のようになります。

<%= link_to "Buy", {:controller => :policies, :action => :policy_option_price_calc, :option => "policy_option_a_cost" }, {:method => :post}  %>

ポリシーコントローラーがあり、アクション内は次のようになります。

def policy_option_price_calc(params)
   #logic stuff

   render :partial => "/policies/swipe_protect/price_total"
end

そして私のルートには次のものがあります:

resources :policies
    member do
        post 'policy_option_price_calc'
    end
end

理由はわかりませんが、link_to リンクをクリックすると、次の URL が表示されます。

http://localhost:3000/?action=policy_option_price_calc&controller=policies&option=policy_option_a_cost

もちろん存在しませんが、エラーが発生することさえありません。HomeControll#index

私は見ました:

フォーム タグ ヘルパー

rubyguild ルーティング

スタック オーバーフローの質問

さらに、さらに多くの。どんな助けでも感謝します、ありがとう。

4

2 に答える 2

0

名前付きルート形式を使用してみましたか?

<%= link_to 'Buy', policy_option_price_calc_policy_url(:option => 'policy_option_a_cost'), :method => :post %>

ルートの名前を微調整する必要があるかもしれませんが、それが私がすることです。あなたがやろうとしている方法では、シンボルの代わりに文字列を使用したいと思うでしょう:

<%= link_to 'Buy', { :controller => 'policies', :action => 'policy_option_price_calc', :option => 'policy_option_a_cost' }, { :method => :post } %>

詳細については、http: //guides.rubyonrails.org/routing.html#the-query-stringを参照してください。

于 2012-09-24T20:52:12.367 に答える
0

を削除すると、

{ :method => post }

ハッシュ 期待される URL が作成されると思います。現時点では、URL が呼び出しているのは HomeController であるため、リクエストは HomeController にルーティングされます。

http://localhost:3000/policies/?action=policy_option_price_calc&controller=policies&option=policy_option_a_cost

はあなたが考えているルートですが、ポリシー/部分がありません。

ただし、これは問題の解決策ではありません。POST リクエストの場合、link_to の代わりに button_to または form ヘルパーを使用する必要があります。

于 2012-09-24T20:57:14.193 に答える