Fala galera,
estou com dúvida na view da minha aplicação, coisa simples (creio eu). Eu tenho uma tabela (html) vinda do banco de dados e quero ordena-la através de vários campos com 3 select box.
Eu tenho um botão que ao ser pressionado irá ordenar de acordo com os valores das select box.
o código em ruby seria assim:
minhas dúvidas são:
1 - Como passar os parametros que eu quero da select box para o controller?
2 - Como fazer para ao clicar no botão seja chamado o controler indicado?
Valeu!
Então guilherme.
Se o nome dos seus selects (valor do atributo name) forem: name=“filtro[parametro1]”, name=“filtro[parametro2]” e name=“filtro[parametro3]”, você pode obter o valor selecionado pelo usuário através de uma chamada ao params: params[:filtro][:parametro1] vai ser o valor do parametro1 e assim por diante.
Já para que os valores chegem ao controller, basta especificar qual a url você quer submeter na action do form, padrão.
Qualquer coisa, diga aí.
Opa, ricardo.valeriano eu consegui resolver essse impasse. Vou colocar o código aqui para alguma futura referência:
Controller
def index
sort_list=[]
sort_list << params[:sort1] if params[:sort1]
unless params[:sort2].blank?
sort_list << params[:sort2]
end
unless params[:sort3].blank?
sort_list << params[:sort3]
end
if sort_list.blank?
@clientes = Cliente.all(:order => 'position')
else
@clientes = Cliente.all(:order => sort_list)
end
end
View
<%= form_tag(:url => {:controller => 'cliente', :action => "index"}, :method => "get") do %>
Ordenar por:
<%= select_tag(:sort1,'<option value="position">Posição</option><!--outros campos da option -->'.html_safe, :include_blank => true, :id => 'select_box1') %>
<%= select_tag(:sort2,'<option value="position">Posição</option><!--outros campos da option -->'.html_safe, :include_blank => true, :id => 'select_box2') %>
<%= select_tag(:sort3,'<option value="position">Posição</option><!--outros campos da option -->'.html_safe, :include_blank => true, :id => 'select_box3') %>
<%= submit_tag 'Ordenar', :id => 'submit_button' %>
<% end %>
Muito obrigado pela ajuda!