2015-05-28 2 views
-1

Я сложена. Вот мой взгляд форма для событий:Отправка информации из вида в рельсы контроллера

<%= form_for(@event) do |f| %> 
    <div class="form-group"> 
     <%= f.radio_button :repeat, 'once', checked: true%><br> 
      <%= f.label :repeat_once, 'once'%><br> 
      <%= f.radio_button :repeat, 'daily'%><br> 
      <%=f.label :repeat_daily, 'daily'%><br> 
      <%= f.radio_button :repeat, 'weekly'%><br> 
      <%= f.label :repeat_weekly, 'weekly'%><br> 
     </div> 
    <div class="actions"> 
     <%= f.submit %> 
     </div> 
    <% end %> 

И у меня есть метод в контроллере

def create 
    @event = Event.new(event_params) 
    @event.user_id = current_user.id 

    @event.save 

    if @event.repeat = 'daily' 
    //// 
end 
if @event.repeat = 'weekly' 
    ////////// 
end 

redirect_to events_url 


    //// it's doesn't matter what inside if block 

Кроме того, моя миграция:

def change 
     add_column :events, :repeat , :string 
    end 

Проблема заключается в том, если блок, потому что они все верно каждый раз, независимо от моего выбора (например, я выбираю еженедельно, но все равно приложение делает это один раз и ежедневно). Что не так с кодом? Спасибо за чтение :) Ожидание какой-либо идеи

ответ

2

Вы должны использовать двойной равные == в вашем if заявлении. В противном случае вы назначаете «ежедневно» @event.repeat, не проверяя, установлено ли оно уже «ежедневно».

if @event.repeat == 'daily' 
+0

спасибо! я скучаю по этому :) –

0

Очевидно, что строка всегда правдивая.

Ваших свойства должны быть булевыми

1

Я думаю, вы должны использовать

if @event.repeat == 'daily' 
    //// 
end 

instead of 

if @event.repeat = 'daily' 
    //// 
end 

@ event.repeat = 'ежедневно' является присвоение 'ежедневно' строку повторить не проверяя его использовать @ event.repeat == «ежедневно ' такой же касается другой если условия также

Смежные вопросы