所以我有一个下拉菜单,其中包含我创建的数据库中的所有标题。无论我选择了什么标题,我都试图将其数值(ID)传递给数据库中的URL路径参数。
这是我在index.erb.html文件
中到目前为止所得到的<%= button_to "SHOW", show_articles_link(*Enter ID Parameter*), :method => 'get' %>
在我的ArticlesController文件中,我写了
def show
@article = Article.find(params[:id])
end
我不确定如何将其ID值传递给该参数。我曾考虑使用像
这样的JavaScriptvar id = document.getElementById('articles').value;
但我不完全确定如何将此变量传递给参数。
还有其他办法吗?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
假设您在索引页面上显示此<%= button_to "SHOW", show_articles_link(*Enter ID Parameter*), :method => 'get' %>
按钮。
所以在索引页面上你必须有像@articles这样的变量,你就像
一样<% @articles.each do |article| %>
<%= button_to "SHOW", show_articles_link(article.id), :method => :get
<% end %>
答案 1 :(得分:0)
您有两种不同的方法来解决此问题:
将您的下拉菜单和按钮封装在表单中。
表单应使用GET方法指向show action URL。
下拉菜单应该是元素id为“id”的select(您要传递给show方法的参数的名称)。
该按钮应该触发表单的提交。
假设您的文章位于@articles
,并且每篇文章都有id
和title
:
<%= form_tag show_articles_link, method: :get do -%>
<%= select_tag :id, options_from_collection_for_select(@articles, "id", "title") %>
<%= submit_tag "SHOW" %>
<% end -%>
将下拉菜单中的“更改”事件绑定到一个函数,该函数使用所选文章的(数据库)id更新/重写按钮的“href”属性。 将按钮的默认href设置为默认情况下在下拉列表中选择的文章的默认href。 使用jQuery简化操作:
在您看来:
<%= select_tag :articles, options_from_collection_for_select(@articles, "id", "title") %>
<%= link_to "SHOW", show_articles_link(id: @articles.first.id), id: "myButton", class: "btn" %>
在您查看(使用<script>
标记)或单独的javascript资产中:
$(document).on "change", "#articles", function() {
$("#myButton").attr("href") = "/article/" + $(this).val();
};
重要提示:您可能需要编辑javascript以反映您的节目文章路线的实际定义方式。在上面的javascript代码中,假设路由定义为'/article/:id'
。