首先,我已经学习 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)
,我认为这很可疑,但我在网上阅读过它们实际上是同一回事,所以我认为这不是问题 - 如果你认为不同,让我知道。