【问题标题】:Saving radio buttons values in rails在 rails 中保存单选按钮值
【发布时间】:2011-10-31 16:41:45
【问题描述】:

我正在尝试在我的 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>

我纠正了我的错字(':actionsto: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 

谢谢!

【问题讨论】:

  • 您的代码对我有用。你有更多信息吗?
  • 日志是否显示请求正在以预期值发布?
  • 抱歉,我对此有点陌生 - 日志是什么?

标签: ruby-on-rails radio-button form-for submit-button


【解决方案1】:

我认为您的form_for 调用中有一个错误:应该使用:url =&gt; { :actions =&gt; "update_status" } 而不是:url =&gt; { :action =&gt; "update_status" }

【讨论】:

  • 你说得对,我确实有那个错字,但由于某种原因它仍然无法正常工作!
  • 正在使用attr_protectedattr_accessible 通话吗?也许问题出在模型内部。
【解决方案2】:

感谢http://railscasts.com/episodes/38-multibutton-form!我想当您尝试在一个页面上使用两个表单时会发生一些奇怪的事情,最好的方法是合并表单,但在我的术语控制器update 定义中使用 if 语句来区分两个按钮。感谢您的所有帮助!

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 2020-08-02
    • 2013-04-03
    • 1970-01-01
    • 2012-12-30
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多