2012-09-10 19 views
19

parametrelerle yayınlanır. Dinlenme (iskele oluşturduğumda) denetleyicim ve Oylar için modelim var, sadece tıklandığında, belirli bir araba için yeni bir oy oluşturacak bir görünüm eklemeye çalışıyorum. Bir POST olmalı, Raylarda bunu yapmamın yolu nedir? [: Car_id] ve paramsRaylar link_to veya button_to istek üzerine

<% @cars.each do |car| %> 
    <tr> 
    <td><%= button_to '+', {:controller => "votes", :action => "create"}, :car_id => car.id, :user_id=> session[:user_id] , :method=>:post %></td> 
    <td><%= car.votes.count %></td> 
    <td><%= car.name %></td> 
    <td><%= car.code %></td> 
    <td><%= car.album %></td> 
<% end %> 

cevap

25
<td><%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , :method=>:post %></td> 

Bu params yapacaktır [: user_id] VotesController mevcut eylem oluşturmak.

1
<td><%= button_to '+', {:controller => "votes", :action => "create", :car_id => car.id, :user_id=> session[:user_id]} , {:method=>:post} %></td> 

Erez haklı - bu durumda ilk karma düğmesi onun isteği gönderir URL'yi kontrol eden "URL parametreleri" karma vardır. İkinci hash, düğmenin görünümünü ve gönderme yöntemini (oluşturulan HTML'ye gizli bir alan ekleyerek) denetleyen "HTML parametreleri" karmadır.

Buradaki kafa karıştırıcı şey, URL parametrelerinin denetleyiciyi ve eylemi denetleyici merkezli bir şekilde belirtmenizi istediği, ancak daha sonra URL için daha fazla URL merkezli olan kimlik için geçiş yapmanızı gerektirdiğidir. Bu kombinasyon beni çok uzun zamandan attı. Bu arada, URL parametrelerinin karma değerine ek parametreler ekleyebilir - bu arada, daha gelişmiş eylemler almak için denetleyicinizdeki diğer yöntemler için argümanlar olarak kullanabilirsiniz.

16

Raylar 5 örneğin, + haml:

= button_to "smth", some_path, method: :get, params: { start_point: 3.month.ago } 

anahtar params anahtar, kontrol ünitesinde Eğer @some_var = parametrelerini ile değeri elde etmek mümkün olacaktır kullanmaktır [: start_point]