我在页面上有两个表单,我们称之为“表单A”和“表单B”。每个表单都可用于搜索电影并显示电影的信息,因此一次最多可以在页面上显示两部电影。由于表单使用ajax,因此每次选择新的Movie A或B时页面都不必重新加载,但是用户不能使用URL链接到他或她所在的任何特定电影组合,因为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=<%=@moviea.title%>")
_movie_a.html.erb
<%= @movieA.content%>
答案 0 :(得分:0)
首先,我想说js.erb
不是最佳做法。最好在前端使用.js
。
据我所知,问题是如何获得另一部电影名称。我看到有两个简单的解决方案:
1.如果你有一个带有电影名称的元素 - 拿到它并放入链接:
var movieName = $("movieNameElement").text()
$("#GetUrl").html("http://movies?a=" + movieName + "&b=<%=@moviea.title%>")
2.通过正则表达式从旧链接获取params:
var oldLink = $("#GetUrl").text()
var movieName = new RegExp('[\?&]' + paramName + '=([^&#]*)').exec(oldLink)
$("#GetUrl").html("http://movies?a=" + movieName[1] + "&b=<%=@moviea.title%>")
希望有所帮助