2017-05-16 1 views
-1

Wie kann ich mehrere Parameter von der Ansicht an die Steuerung übergeben? Ich brauche eine Anfrage wie zum Beispiel auszuführen:Übergeben Sie mehrere Parameter durch link_to in Schienen

GET "/indicators/data?country_id=5&statistic_id=12&anotherparameter_id=anothervalue, ...." 

Jeder Parameter wird erzeugt durch seine eigene link_to Auswahl, und ich mag die Parameter verwenden, zusammen mein Modell abzufragen.

#app/views/indicators/index.html.erb 
<!--statistic select button--> 
<ul id = "statistics"> 
    <% Statistic.all.each do |stat| %> 
    <li><%= link_to stat.indicator_name, :action => "data", :controller => "indicators", :statistic_id => stat.indicator_code, remote: true %></li> 
    <% end %> 
</ul> 

<!--country select button--> 
<ul id = "countries"> 
    <% Country.all.each do |c| %> 
    <li><%= link_to c.name, :action => "data", :controller => "indicators", :country_id => c.id, remote: true %></li> 
    <% end %> 
</ul> 

#config/routes.rb 
get 'indicators/data' => 'indicators#data' 

#app/controllers/indicators_controller.rb 
    def data 
    @country = Country.find(params[:country_id]).name 
    @statistic = params[:statistic_id] 
    @queryresult = Mymodel.where(country: @country, statistic: @statistic) 
    respond_to do |format| 
     format.js 
    end 
    end 

EDIT: Ich hatte über Antworten kommen, die wie so zu tun raten:

link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux") 
# => <a href="/searches?foo=bar&amp;baz=quux">Nonsense search</a> 

Aber in meinem Fall habe ich zwei verschiedene Links ein mit einem einzigen Parameter (zB foo entsprechend ein Kontrollkästchen.) und der andere ein einzelner Parameter für baz (z. B. ein Dropdown) sozusagen. Die Herausforderung besteht darin, die Parameter von verschiedenen Links zu ziehen und zusammenzufügen.

+4

Es gibt durchaus ein paar Fragen bereits auf diese http://stackoverflow.com/questions/10773695/rails-passing-parameters-in-link-to?rq=1 – Iceman

+1

Neben bestehenden Fragen gibt es bereits eine Antwort, um einen Link mit mehreren Parametern zu verwenden. Immer noch keine Antwort gefunden? Vielleicht braucht Ihre Frage mehr Details oder Klärung. – Gerry

+0

@gerry Ich hatte die mehreren Parameter in einem Link Beispiel gesehen. Bitte beachten Sie die Klarstellung unter dem EDIT – amo

Antwort

0

Anstelle von Controller, Aktion usw. können Sie einfach route_helper_method mit Params verwenden, die Sie einfach übergeben möchten.

<li><%= link_to stat.indicator_name, indicators_data_url(countryid: "value", another_id: "value", etc: "etc"), remote: true %></li> 

Lesen Sie mehr über link_to hier

+0

Kann ich den Grund für die Abstimmung unten wissen? –

Verwandte Themen