2016-04-30 98 views
1

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

我完全失去了。任何人有任何想法如何做到这一点?

回答

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蛞蝓的url。

+0

那么我将如何使用A和B下拉列表动态设置正确的路径? –

+0

使用'compare_path(movie_a:“movie_a_name”,movie_b:“movie_b_name”)'。如果您使用的是JavaScript,请使用“/ compare/movie_a_name/movie_b_name”。 –

+0

但是,如果我使用A方更新路径,我将如何使B参数保持不变? –

相关问题