我正在尝试在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
谢谢!
答案 0 :(得分:2)
我认为您form_for
电话中存在错误:不应使用:url => { :actions => "update_status" }
,而应使用:url => { :action => "update_status" }
。
答案 1 :(得分:2)
感谢http://railscasts.com/episodes/38-multibutton-form想出来!我想当你尝试在一个页面上使用两个表单时会发生一些奇怪的事情,最好的方法是组合表单但在我的术语控制器update
定义中使用if语句来区分这两个按钮。谢谢你的帮助!