Passar parâmetros da select box para método no controller

2 respostas
G

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!

2 Respostas

R

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í.

G

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!

Criado 17 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 2
Participantes 2