我有一个模型Movie
,我有一个用于比较两部电影的页面。我使用params 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侧的“响铃”,然后新路径应为compare_path(a: "Harry Potter", b: "The Ring")
。然后如果我改变主意并在A面选择“Bewitched”,那么路径会重新更新为compare_path(a: "Bewitched", b: "The Ring")
我完全迷失了。任何人都知道如何做到这一点?
答案 0 :(得分:0)
使用以下路线参数化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
段。