如何在Rails中使用date_select形式设置实例变量?

时间:2013-07-18 04:49:30

标签: ruby-on-rails

我有一个存档页面,我希望用户能够选择日期并提取在该日期创建的微博。我想我已经接近搞清楚,我只是无法弄清楚如何使用date_select形式设置实例变量。我的控制器中有一个看起来像这样的方法:

def archive
  @date_search = []
end

我想暂时将实例变量设置为空集,以便稍后分配。我对饲料的偏爱看起来像这样:

<ol class="microposts">     
<%= render partial: 'shared/feed_item', collection:Micropost.where("DATE(created_at) = ?", @date_search) %>
</ol>

我可以在控制器中为@date_search指定一个值,它会显示该日期的帖子,这样看似可行。现在我只需要能够使用表单设置变量。我的日期表格看起来像这样:

<%= form_for(@date_search) do |f| %>
  <div class="field">       
    <%= f.select_date Date.today, :prefix => :date_search %>
  </div>
  <%= f.submit "Submit", class: "btn btn-lrg btn-primary" %>
<% end %>

但我不行。也许我使用了错误的选择日期形式,因为如果我没有将f放在块中的select_date前面,那么表单会显示在视图中,但是当我提交它时没有任何反应。当我把f.select_date放进去时我得到了这个错误

undefined method 'select_date' for #<ActionView::Helpers::FormBuilder:0x0000010170f3d0>

有没有人有任何想法? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

来自documentation select_date并未出现在ActionView::Helpers::FormBuilder中,因此我会在没有f的情况下进行尝试。此外,他们将它与日期对象一起使用:

my_date = Time.now + 6.days

# Generates a date select that defaults to the date in my_date (six days after today).
select_date(my_date)

虽然我不确定。

或许你想要date_select

答案 1 :(得分:0)

我在视图中使用了form_tag,在文本字段标签中使用了datepicker gem来在表单中创建实时更新。

e.g。

<%= form_tag the_controller_path, method: :get do %>

<%= submit_tag("date update") %>

<%= label_tag(:q, "Selected Date") %>

<%= text_field_tag :q, @date_search, :class => 'datepicker' %>

获取用户输入。

@date_search此处是更新日期时文本框中显示的内容。

然后在方法中使用params [:q]来使用控制器中的选定日期。

e.g。在控制器中:

def archive

    @date_search = params[:q]

end

这样的事情对你有用吗?