如何将数据库ID传递给Rails URL路径

时间:2015-10-21 12:38:45

标签: javascript ruby-on-rails

所以我有一个下拉菜单,其中包含我创建的数据库中的所有标题。无论我选择了什么标题,我都试图将其数值(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值传递给该参数。我曾考虑使用像

这样的JavaScript
var id = document.getElementById('articles').value;

但我不完全确定如何将此变量传递给参数。

还有其他办法吗?任何帮助,将不胜感激。谢谢!

2 个答案:

答案 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)

您有两种不同的方法来解决此问题:

  1. 使用表单&amp;提交
  2. 将您的下拉菜单和按钮封装在表单中。 表单应使用GET方法指向show action URL。 下拉菜单应该是元素id为“id”的select(您要传递给show方法的参数的名称)。 该按钮应该触发表单的提交。 假设您的文章位于@articles,并且每篇文章都有idtitle

    <%= form_tag show_articles_link, method: :get do -%>
      <%= select_tag :id, options_from_collection_for_select(@articles, "id", "title") %>
      <%= submit_tag "SHOW" %>
    <% end -%>
    
    1. 使用javascript
    2. 将下拉菜单中的“更改”事件绑定到一个函数,该函数使用所选文章的(数据库)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'