所以我正在努力。我想要一个复选框,将Time.now发送到我的数据库下的特色列。
我知道如何使用check_box_tag传递params,这似乎如下所示:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"24aw2xi68XsgMrU28is3wcXkNdhLlgVHhZBuJdd9984=", "article"=>{"body"=>"oops", "published"=>"0", "headline"=>"headlinez", "input_slug"=>"weee", "article_position"=>"5", "issue_id"=>"1", "section_id"=>"1", "author_id"=>"", "flag"=>"0"}, "commit"=>"Save Article", "featured"=>"2014-01-25 19:28:57 -0800", "id"=>"weee"}
但是我怎样才能从WITHIN文章中传递出来?表格似乎不喜欢check_box_tag,那你怎么做呢?
这是我的表格:
<div class="field">
<label>Featured Article?</label>
<%= check_box_tag :featured, @time %>
</div>
答案 0 :(得分:1)
要将参数移动到文章哈希中,您可以将check_box_tag命名为这样的
<%= check_box_tag 'article[featured]', @time %>
编辑 - 在您使用form_for
后,为此答案添加更多内容你可以做这种事,因为你有一个@article和'特色'方法......
<%= f.check_box :featured, {}, Time.now %> # As you wrote in your answer
但是,你也可以这样做,这是一个更多的Rails标准......
将'featured'更改为featured_at(这是指示日期时间的更标准方式),并在文章中添加'特色'attr_access。
class Article < ActiveRecord::Base
attr_accessor :featured
def featured
!!featured_at
end
def featured=(value)
if featured_at.present? && value.blank?
self.featured_at = nil
elsif featured_at.blank? && value.present?
self.featured_at = Time.now
end
end
然后,您可以通过featured
的表单提交布尔值,而不是日期时间。
= f.check_box :featured, {}, 'true', ''
这不太容易受到任何形式的黑客攻击。这可能无关紧要,只是一种很好的做法。
答案 1 :(得分:0)
我终于能够通过以下方式做到这一点
<%= f.check_box :featured, {}, Time.now %>