2016-11-11 70 views
0

我在頁面上有兩種形式,我們稱它們爲「Form A」和「Form B」。每個表單都可以用來搜索電影並顯示電影的信息,因此最多可以一次在頁面上顯示兩部電影。由於表單使用ajax,因此每次選擇新的電影A或B時都不必重新加載頁面,但用戶無法使用URL鏈接到他或她所在的任何特定電影組合,因爲ajax不會不更新網址。如何使用ajax生成兩個單獨輸入的鏈接?

我想提供一個與當前電影相對應的參數的鏈接,如果更新了電影A或B,則必須更新這些參數。因此,如果電影A是「閃爍」並且電影B更新爲「崩潰」,則字符串將更新爲:www.website.com/movies?A=Blink&B=Crash

如果頁面只顯示一部電影,那很容易。但這裏的訣竅是,當我更新電影B時,我必須能夠更新params[:B]的值,同時保留params[:A]的值,反之亦然。如果當前的「獲取鏈接」爲www.website.com/movies?A=Blink&B=Crash,並且我將電影A更新爲「怪物史萊克」,則新的「獲取鏈接」應爲www.website.com/movies?A=Shrek&B=Crash。等等。

任何人有任何想法可以做到這一點?


這裏是我的代碼的基礎知識(我試圖排除任何多餘的):

movies.html.erb

<div id="GetUrl"></div> 

<form id="Form A"><!-- points to movies_controller:new_movieA --></form> 
<div id="MovieA"></div> 

<form id="Form B"><!-- points to movies_controller:new_movieA --></form> 
<div id="MovieB"></div> 

movies_controller.rb

def new_movieA 
    @movieA = Movie.find(params[:movie]) 
    respond_to do |format| 
    format.js 
    end 
end 

#More of the same for movie B. 

movieA.js.erb

$("#MovieA").html("j render @movie_a") 
$("#GetUrl").html("http://movies?a=&b=<%[email protected]%>") 

_movie_a.html.erb

<%= @movieA.content%> 

回答

0

首先,我想說的是js.erb是不是最好的做法。最好在前端使用.js

據我所知,問題是如何獲得另一個電影名稱。有兩個簡單的解決方案,我看到:

1.如果您有電影名稱的元素 - 得到它,放在鏈接:

var movieName = $("movieNameElement").text() 
$("#GetUrl").html("http://movies?a=" + movieName + "&b=<%[email protected]%>") 

通過正則表達式從舊的鏈接2.註冊PARAMS:

var oldLink = $("#GetUrl").text() 
var movieName = new RegExp('[\?&]' + paramName + '=([^&#]*)').exec(oldLink) 
$("#GetUrl").html("http://movies?a=" + movieName[1] + "&b=<%[email protected]%>") 

希望它有幫助

相關問題