2013-05-28 3 views
0

Я создаю ежемесячный отчет, который требует, чтобы пользователь ввел месяц, а затем отобразил отчет за этот месяц. У меня есть следующий, чтобы получить месяц:Рельсы, отображающие форму, основанную на пользовательском вводе

= simple_form_for @month, html: { :class => 'form-inline' } do |f| 
= f.input :month, label: 'Report Month', collection: month_select, input_html: {class: 'span2'} 

Я просто установить месяц, как @month = «»

Месяц не в моей базе данных, но у меня есть фильтр кодированного для фильтрации базы данных по месяцам bassed в поле даты. Я просто хочу, чтобы пользователь мог выбрать месяц и посмотреть результаты. Теперь выбор не сохраняется в переменной @month. Я думаю, мне нужно либо реализовать метод в моем контроллере, чтобы повторно отправить мою форму, фильтрованную в этом месяце, либо использовать javascript. Я не знаю, как это сделать

Как настроить форму, чтобы разрешить запись даты, а затем отобразить отчет для этой даты?

+0

простой формы, как правило, требует объект ActiveModel присутствовать. Вы знаете, что это? В качестве альтернативы, вы хотите получить решение без простой формы? –

+0

Непростая форма в порядке. Все, что я хочу сделать, это выбрать месяц, назначить месяц переменной и отобразить отчет, отфильтрованный в этом месяце. Я хочу, чтобы выбор и отчет на той же странице предпочтительнее - так что пользователь может выбрать марш и см. общее количество за март или что-то еще – tbrooke

ответ

1

ОК, поэтому давайте предположим, что вы публикуете наши результаты для модели счета-фактуры --- и вы хотите отфильтровать по месяцам.

= form_tag url: invoices_path do 
    = select_tag :month, month_select, prompt: true 
    = submit_tag "Filter" 

Затем в invoices_controller.rb:

def index 
    @invoices = Invoice.by_month(params[:month]) 
end 

и в вашей invoice.rb модели:

def self.by_month(selected_month=nil) 
    if month 
    where(month: selected_month) 
    else 
    scoped 
    end 
end 
Смежные вопросы