如何根据两个不同的输入动态设置链接的路径?

时间:2016-04-30 07:29:44

标签: javascript jquery html ruby-on-rails variables

我有一个模型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侧的“响铃”,然后新路径应为compare_path(a: "Harry Potter", b: "The Ring")。然后如果我改变主意并在A面选择“Bewitched”,那么路径会重新更新为compare_path(a: "Bewitched", b: "The Ring")

我完全迷失了。任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分: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段。