2015-10-21 34 views
0

所以我有一個下拉菜單,它包含我創建的數據庫中的所有標題。無論我選擇什麼標題,我都試圖將其數值(ID)從數據庫傳遞到URL路徑參數中。如何將數據庫ID傳遞到Rails 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; 

但我不完全知道如何將此變量傳遞給參數。

是否有另一種方法可以做到這一點?任何幫助,將不勝感激。謝謝!

+0

要清楚,你需要一個列出文章的選擇框,並且當用戶從這個列表中選擇一篇文章時,他應該被重定向到這篇文章的頁面? – MrYoshiji

回答

0

假設您在索引頁上顯示此<%= button_to "SHOW", show_articles_link(*Enter ID Parameter*), :method => 'get' %>按鈕。

所以索引頁U上必須有一個像@articles變量,而您是服務像

<% @articles.each do |article| %> 
    <%= button_to "SHOW", show_articles_link(article.id), :method => :get 
<% end %> 
0

你有兩種不同的方式來解決這個問題:

  1. 使用表單提交&

將下拉菜單和按鈕封裝在表單中。 表單應該使用GET方法指向show action URL。 下拉菜單應該是一個選擇元素id爲「id」(要傳遞給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 -%> 
  • 使用JavaScript
  • 綁定 「改變」您的下拉菜單中的事件到一個函數,該函數使用所選文章的(數據庫)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'