2015-04-06 63 views
1

我有我的HAML視圖下的link_to方法:爲什麼我無法將params傳入控制器link_to?

= link_to(t('compare.view_as_graph'), compare_graph_projects_url, remote: true) 

當我點擊這個鏈接,我想我的網址的PARAMS具有這種擴展名:

p/compare?project_0=MySQL&project_1=fast-math 

傳遞到compare_controller我已經使用下面的代碼創建了它。

def projects_graph 
    respond_to do |format| 
    format.js 
    end 
end 

目前的代碼給了我這個PARAMS哈希,當我檢查它:

{"controller"=>"compare", "action"=>"projects_graph", "query"=>nil} 

這不是我所需要的。我需要project_0和project_1部分。 這是routes.rb中

get 'p/graph', to: 'compare#projects_graph', as: :compare_graph_projects 
我的路線

我已經嘗試了一些東西,因爲這

compare_graph_projects_url(params) 
compare_graph_projects_url(opts[:graph]) 
= link_to(t('compare.view_as_graph'), compare_graph_projects_url, data: {params: params}, remote: true) 

(該OPTS [:圖表]在HAML一個變量,它包含了PARAMS )

我在這裏做錯了什麼?爲什麼我不能通過AJAX請求獲取參數?

,我能想到的唯一的另一件事是做request.referer獲得實際的報頭信息,但這似乎並不十分railsy。幫助將不勝感激。

+0

project_0 = MySQL的&PROJECT_1 =快速數學難道這些PARAMS靜態或動態? – sansarp

+0

感謝sansarp的快速回復?靜態或動態是什麼意思? –

回答

2

你只需要在價值傳遞的網址助手裏面是這樣的:

= link_to(t('compare.view_as_graph'), compare_graph_projects_url(project_0: "Your value", project_1: "your value"), remote: true) 

然後你就可以訪問這些控制器是這樣的:

def projects_graph 
    @proj_0 = params[:project_0] 
    @proj_1 = params[:project_1] 
end 

你也應該瞭解action controllers更多有關事情如何工作的細節。

+1

這是正確的。 –

+0

謝謝Mandeep,我現在看到我的錯誤。所需的URL參數是哈希格式,而不僅僅是一個變量,儘管這樣的事情compare_graph_projects_url(@instance_variable) –

2

你應該通過你的參數路線助手這樣的:

compare_graph_projects_url(project_0: opts[:graph][project_0], project_1: opts[:graph][project_0])

+0

,而你將張貼答案,請儘量讓他們整齊以及編輯和起草。 –

相關問題