尝试使用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链接时我得到了这个网址:
http://localhost:3000/?action=policy_option_price_calc&controller=policies&option=policy_option_a_cost
当然不存在,但它甚至没有给我一个错误它只是由我的HomeControll#index
我看过:
还有更多。任何帮助将不胜感激,谢谢。
答案 0 :(得分: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。
答案 1 :(得分:0)
如果删除
{ :method => post }
hash我认为会创建预期的url。 此时您的请求被路由到HomeController,因为这是您的URL正在调用的。
http://localhost:3000/policies/?action=policy_option_price_calc&controller=policies&option=policy_option_a_cost
是您正在考虑的路线,但缺少政策/ 部分。
然而,不是您问题的解决方案。对于POST请求,您应该使用button_to或表单助手而不是link_to。