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 }

哈希我认为将创建预期的网址。目前,您的请求被路由到 HomeController,因为这是您的 URL 正在调用的内容。

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

是您正在考虑的路线,但缺少政策/部分。

但是,这不是您问题的解决方案。对于 POST 请求,您应该使用 button_to 或表单助手而不是 link_to。

于 2012-09-24T20:57:14.193 回答