Прежде всего, я изучаю Rails в течение 8 месяцев, но чувствую, что я начал вчера, поэтому, пожалуйста, несите меня. Я пытаюсь решить, почему моя ценность, называемая видимой, работает неправильно. Я использую Simple_form. «Видимым» является радио значение кнопки:schema.rb и проблема базы данных mysql в ruby on rails
<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 вызывает проблему? Будет ли «миграция» стать способом? Как я могу сказать, что в миграции используется параметр «default => true»?
Наконец, в то время как мой schema.rb имеет «boolean», моя фактическая база данных имеет visible: tinyint(1)
, что, по моему мнению, было подозрительным, но я читал онлайн, они на самом деле одно и то же, поэтому я не думаю, что это проблема - если вы думаете по-другому, дайте мне знать.
Приветствия, спасибо, что поставили меня на правильный путь. Взгляни сейчас. Единственная альтернатива, однако, состоит в том, чтобы иметь значение по умолчанию => false, поскольку логическое значение должно быть таким или другим, верно? – CHarris