2012-09-24 75 views
0

嘗試使用link_to將信息發送到我的控制器中的操作。link_to:控制器,:在視圖中的操作不工作ruby on rails

鏈接看起來是這樣的:

<%= 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

我已經看過:

Form tag helpers

rubyguild routing

Stack overflow question

還有更多。任何幫助將不勝感激,謝謝。

回答

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

+0

我嘗試過使用字符串,其實這是我累了的第一件事。它仍然不起作用。 – Ryan

0

如果刪除

{ :method => post } 

哈希我認爲預期的URL將被創建。 目前你的請求被路由到HomeController,因爲這是你的URL調用。

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

是你思考的路徑,但政策/部分缺失。

但是,這是不是你的問題的解決方案。對於POST請求,您應該使用button_to或者使用幫助器而不是link_to。

相關問題