Сохранение значений переключателей в рельсах - PullRequest
0 голосов
/ 21 августа 2011

Я пытаюсь использовать радиокнопки в моем приложении rails. В настоящее время кнопки отображаются на странице, как и ожидалось, но значение не сохраняется при отправке. Я думаю, что проблема на самом деле с моей кнопкой отправки - при нажатии ничего не происходит.

Вот код моей страницы с переключателями:

<div class="form_row>
<%= form_for @term, :url=>{ :action =>"update_status" } do |f| %>
  <%= f.radio_button :status, 'on' %><b>On</b> <br/>
  <%= f.radio_button :status, 'off' %><b>Off</b> <br/>
  <%= f.radio_button :status, 'leave' %><b>Leave</b> <br/>
  <div class="actions">
    <%= f.submit "Change term status" %>
  </div>
<% end %>
</div>

Я исправил опечатку (': actions to: action`), но она все еще не работает. Вот еще немного информации ...

Переключатели находятся вверху страницы, а остальная часть формы - под ними. У меня есть две разные кнопки отправки, одна для переключателей, а другая для заполнения пустой информации внизу страницы. Вторая форма работает отлично, но когда я нажимаю кнопку «Изменить статус» (кнопка, которая должна отправлять переключатели, вызывая update_status, ничего не происходит.

Вот весь код для просмотра моей страницы:

<h1> <%= @title %> </h1>

<div class="form_row>
<%= form_for @term, :url=>{ :action =>"update_status" } do |f| %>
  <%= f.radio_button :status, 'on' %><b>On</b> <br/>
  <%= f.radio_button :status, 'off' %><b>Off</b> <br/>
  <%= f.radio_button :status, 'leave' %><b>Leave</b> <br/>
  <div class="actions">
    <%= f.submit "Change term status" %>
  </div>
<% end %>
</div>

<%= form_for @term, :url=>{ :action=>"update" } do |f| %>     
  <div class="field">
    <%= f.label :course1, "Course 1" %><br />
    <%= f.text_field :course1 %>
  </div>
  <div class="field">
    <%= f.label :course2, "Course 2" %><br />
    <%= f.text_field :course2 %>
  </div>
  <div class="field">
    <%= f.label :course3, "Course 3" %><br />
    <%= f.text_field :course3 %>
  </div>
  <div class="field">
    <%= f.label :course4, "Course 4" %><br />
    <%= f.text_field :course4 %>
  </div>
  <div class="actions">
       <%= f.submit "Update" %>
  </div>
<% end %>

И вот оба определения:

 def update
    @term = Term.find(params[:id])
    @dplan=@term.dplan
    if @term.update_attributes(params[:term])
        flash[:success] = "Edit successful."
        redirect_to @dplan
    else
        flash[:success] = "Error"
        redirect_to @dplan
    end 
end 

def update_status
    @term = Term.find(params[:id])
    @dplan=@term.dplan
    if @term.update_attributes(params[:term])
        flash[:success] = "Term status changed."
        redirect_to @term  
    else
        flash[:success] = "Error"
        redirect_to @term 
    end 
end 

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Понял это благодаря http://railscasts.com/episodes/38-multibutton-form! Я предполагаю, что происходит нечто странное, когда вы пытаетесь использовать две формы на одной странице, лучший способ сделать это - объединить формы, но использовать оператор if в моем контроллере терминов.update определение, чтобы различать две кнопки.Спасибо за вашу помощь!

2 голосов
/ 21 августа 2011

Я думаю, что в вашем form_for вызове есть ошибка: вместо использования :url => { :actions => "update_status" } это должно быть :url => { :action => "update_status" }.

...