2016-04-30 38 views
1

我有一個模型Movie和我有一個頁面比較兩部電影。我使用PARAMS AB設置兩部電影:如何根據兩個不同的輸入動態設置鏈接的路徑?

<% 
    @movie1 = Movie.find_by(title: params[:A]) 
    @movie2 = Movie.find_by(title: params[:B]) 
%> 

頁面的左側顯示了「A」的電影和右側顯示「B」的電影。

有一個選項可以刪除兩個當前的電影並輸入新的電影。現在我所擁有的系統是這樣的:頁面的「A」和「B」邊都有一個下拉菜單,其中包含用戶輸入的可點擊建議,點擊A側的建議鏈接除了用params[:A]代替之外,相同的頁面,反之亦然。

例如,點擊「哈利·波特」的A面下會使用此鏈接:<%= link_to "Harry Potter", compare_path(A: "Harry Potter", B: params[:B]) %>

但是這樣一來,用戶必須等待頁面,選擇每部電影之後加載。我希望用戶能夠輸入兩部電影,然後按下按鈕以使用新參數重新加載頁面。

所以我需要某種「運行比較」鏈接按鈕,並且點擊一個建議將不得不重置該鏈接的路徑,可能使用jQuery。訣竅是,「A」建議必須考慮最近的「B」建議,反之亦然。例如,如果兩個選項都是空的,並且我在A側選擇「哈利波特」,那麼鏈接的路徑將是compare_path(a: "Harry Potter", b: ""),但是如果我在B側選擇「The Ring」,那麼新的路徑應該是compare_path(a: "Harry Potter", b: "The Ring")。然後如果我改變了主意並在A方選擇了「迷惑」,那麼路徑重新更新爲compare_path(a: "Bewitched", b: "The Ring")

我完全失去了。任何人有任何想法如何做到這一點?

回答

0

使用以下路線參數movie_amovie_b(假設你有一個MoviesController):

get "compare/:movie_a/:movie_b" => "movies#compare", as: :compare 

注意params[:movie_a]params[:movie_b]將映射到相應的:movie_a,並且:movie_b蛞蝓的url。

+0

那麼我將如何使用A和B下拉列表動態設置正確的路徑? –

+0

使用'compare_path(movie_a:「movie_a_name」,movie_b:「movie_b_name」)'。如果您使用的是JavaScript,請使用「/ compare/movie_a_name/movie_b_name」。 –

+0

但是,如果我使用A方更新路徑,我將如何使B參數保持不變? –

相關問題