Ruby on rails RubyonRails-保留在编辑视图中选中的单选按钮
我有一个表单要创建,还有一个表单要编辑我网站上的一些信息。在创建表单中,用户可以选择一些单选按钮,例如是或否,在我的数据库中,这些字段是布尔值true或false 在我的表单版本中,如何保留选定的单选按钮?当前,如果用户选择任何选项,则编辑视图不保存此信息,只显示空白单选按钮。 edit.html.erbRuby on rails RubyonRails-保留在编辑视图中选中的单选按钮,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个表单要创建,还有一个表单要编辑我网站上的一些信息。在创建表单中,用户可以选择一些单选按钮,例如是或否,在我的数据库中,这些字段是布尔值true或false 在我的表单版本中,如何保留选定的单选按钮?当前,如果用户选择任何选项,则编辑视图不保存此信息,只显示空白单选按钮。 edit.html.erb <%= form_tag guide_dog_form_path(@guidedoguser), method: "put" do %> <%= radio_button
<%= form_tag guide_dog_form_path(@guidedoguser), method: "put" do %>
<%= radio_button_tag :work, @guidedoguser.work %>
<% end %>
controller.rb
class GuideDogFormsController < ApplicationController
def create
@contact = GuideDogForm.new(params[:contact])
if @contact.save
GuideDogMailer.delay_for(10.seconds, retry: true).create(@contact)
render nothing: true, status: 200
else
render nothing: true, status: 400
end
end
def edit
@guidedoguser = GuideDogForm.where(rg: params[:rg]).first
end
def update
@guidedoguser = GuideDogForm.where(rg: params[:rg]).first
if @guidedoguser.update(work: params[:work])
redirect_to guide_dog_form_path(@guidedoguser)
else
render 'edit'
end
end
end
如何在“是”或“否”单选按钮中显示这两个选项,并保留在“创建”上选择的选项
谢谢。您不需要两个单独的表单。您可以只使用一个,并使用form_for代替form_标记。当您有一个a模型要操作时,您应该使用表单_进行操作。form_标签用于无支持模型的表单。同样,单选按钮标签是当您没有支持模型时,单选按钮是当您有支持模型时。既然你有一个模型,你应该走表单标签路线。我建议将这一点改为假设您的GuideDogForm模型上有“work”属性: edit.html.erb您可以将其复制并粘贴到new.html.erb,它的工作方式应该与您期望的新记录相同
<%= form_for @guidedoguser do do |f| %>
<%= f.radio_button :work %>
<% end %>
控制器:
class GuideDogFormsController < ApplicationController
def new
@guidedoguser = GuideDogForm.new
end
def create
@guidedoguser = GuideDogForm.new(guide_dog_params)
if @guidedoguser.save
GuideDogMailer.delay_for(10.seconds, retry: true).create(@guidedoguser)
render nothing: true, status: 200
else
render nothing: true, status: 400
end
end
def edit
@guidedoguser = GuideDogForm.where(rg: params[:rg]).first
end
def update
@guidedoguser = GuideDogForm.where(rg: params[:rg]).first
if @guidedoguser.update_attributes(guide_dog_params)
redirect_to guide_dog_form_path(@guidedoguser)
else
render 'edit'
end
end
private
def guide_dog_params
# note if you have more fields you want to persist in your model from your form, you will
# need to add them here after :work
params.require(:guide_dog_form).permit(:work)
end
end
谢谢@bkimble。这应该适用于特定的Rails版本?我尝试了一个错误未定义的方法“单选按钮标签”。可能是什么?我使用Rails 4.1.5抱歉,我在原始帖子中有一个输入错误-它应该是f.radio_按钮。我更新了我的答案!你的第一段更新/更新栏不完全正确。由于update\u列直接在数据库中更新属性,因此大多数情况下首选使用update。跳过Rails验证和回调。看文档,你说得对。我在看AR::Base.update,它需要一个ID和散列。。修正我的答案。