我有一个型号Movie
我有一个用于比较两部电影的页面。我使用参数 A
和B
设置两部电影:
<%
@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")
我彻底迷路了。有人知道如何实现这一目标吗?
最佳答案
使用以下路由参数化 movie_a
和 movie_b
(假设您有一个 MoviesController
):
get "compare/:movie_a/:movie_b" => "movies#compare", as: :compare
请注意,params[:movie_a]
和 params[:movie_b]
将映射到相应的 :movie_a
和 : movie_b
网址的 slug。
关于javascript - 如何根据两个不同的输入动态设置链接的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36952107/