【发布时间】:2013-06-25 20:18:36
【问题描述】:
首先,我已经学习 Rails 8 个月了,但感觉就像我昨天开始的一样,所以请多多包涵。我正在尝试解决为什么我的价值(称为可见)无法正常运行。我正在使用 Simple_form。 'visible' 是单选按钮的值:
<div class='review-form'>
<%= simple_form_for(@review) do |f| %>
# input boxes for current_user to put text here
#'public' radio button, checked by default, class is for css
<%= f.radio_button :visible, "true" , :class => "share_button" %>
#'private' radio button, class is for css
<%= f.radio_button :visible, "false", :class => "keep_private_button" %>
#user can cancel
<%= link_to I18n.t('write_review.cancel_button'), landing_page,
:class => 'btn' %>
#user can submit
<%= f.button :submit, I18n.t('write_review.submit_button'),
:class => 'btn btn-primary' %>
这个想法是 current_user 撰写评论 - 如果他们将其设为“公开”,则任何其他用户都可以看到它,如果是私人用户,则只有他们可以看到它。单选按钮工作正常 - 当我注销时,查看不同机器上的应用程序等,单选按钮处于上次保存的状态。问题在于,无论单选按钮的状态如何,当前的评论 @review 始终对所有人可见。
我把<%= @review.visible? %> 写在评论表上。每次我刷新页面时它都是“真”,即使单选按钮可能是假的。我保存评论,@review.visible 然后进行相应的匹配。但随后我刷新,它又恢复了真实。
我认为问题可能是:
在我的 schema.rb 我有:
t.boolean "visible", :default => true
我删除了:default => true,没有任何改进,但我听说你不应该手动干预 schema.rb。
你认为 default => true 是导致问题的原因吗?做一个“迁移”是要走的路吗?在迁移中我该如何表述“默认 => true”部分?
最后,虽然我的 schema.rb 有“布尔值”,但我的实际数据库有 visible: tinyint(1) ,我认为这很可疑,但我在网上看到它们实际上是一回事,所以我不认为那是问题 - 如果您有不同的想法,请告诉我。
【问题讨论】:
标签: mysql ruby-on-rails simple-form schema.rb