Ruby on rails 3 有问题:检查单选按钮-导轨

Ruby on rails 3 有问题:检查单选按钮-导轨,ruby-on-rails-3,forms,radio-button,default,radiobuttonlist,Ruby On Rails 3,Forms,Radio Button,Default,Radiobuttonlist,我很抱歉发布了关于这段代码的另一个问题,但我是rails的新手,这很痛苦。我的问题是,当DB中存在默认值时,我想选择第三个单选按钮。换句话说,我有三个按钮“真”、“假”和“要么”。如果没有选择任何内容,或者用户选择了“任一”按钮,我希望显示该选择。当前,如果用户选择“真”或“假”,则该选择将正确反映,并符合预期。只是选择的第三个选项在表单保存或再次打开时没有反映出来。这是我的密码: <div class="new-partner-form"> <%= form_for [:ad

我很抱歉发布了关于这段代码的另一个问题,但我是rails的新手,这很痛苦。我的问题是,当DB中存在默认值时,我想选择第三个单选按钮。换句话说,我有三个按钮“真”、“假”和“要么”。如果没有选择任何内容,或者用户选择了“任一”按钮,我希望显示该选择。当前,如果用户选择“真”或“假”,则该选择将正确反映,并符合预期。只是选择的第三个选项在表单保存或再次打开时没有反映出来。这是我的密码:

<div class="new-partner-form">
<%= form_for [:admin, matching_profile.partner, matching_profile],  :html => {:id => "edit_profile", :multipart => true} do |f| %>
  <div class="rounded-block semi-wide clear">
    <h4>Military Service</h4>
    <%= f.radio_button :served_in_us_army, false %>
    <%= label :served_in_us_army, 'NO', {:style => 'display:inline'} %>
    <%= f.radio_button :served_in_us_army, true %>
    <%= label :served_in_us_army, 'YES', {:style => 'display:inline'} %>
    <%= f.radio_button :served_in_us_army, " ", { :checked => (:served_in_us_army.nil? or :served_in_us_army.blank? ? true : false) } %>
    <%= label :served_in_us_army, 'Either', {:style => 'display:inline'} %>
    <%= f.error_message_on :served_in_us_army %>
  </div>

{:id=>edit_profile',:multipart=>true}do | f |%>
兵役
'显示:内联'}%>
'显示:内联'}%>
(:在美国陆军服役。无?或:在美国陆军服役。空白??对:错)}%>
'显示:内联'}%>
编辑:我应该注意到,我也尝试了:checked”选项,但没有花括号。还是不走运

不确定这是否是最佳解决方案,但以下是我解决问题的方法(我需要的是字段值而不是列名):


兵役
'显示:内联'}%>
'显示:内联'}%>
匹配的_profile.served _陆军_.nil?%%>
'显示:内联'}%>

我建议您不要在视图中执行此操作。这是商业逻辑

尝试在控制器中执行此操作,或者在模型中执行更好的操作

在这种情况下,您可能希望控制器用于新操作和(特别是)编辑操作,并可能为该信息创建一个实例变量。您可以从数据库中选择值、添加手动选项、使用if-then或其他任何选项来正确设置对象


最好的(总是)是尝试在模型级别解决这个问题。您可以使用模型方法查看现有的兵役价值,然后返回相关信息——即使是真/假值,因为布尔值也很好。只需确保在执行此操作之前正确准备属性(以匹配数据库)。保存

我建议您不要在视图中执行此操作。这是商业逻辑

尝试在控制器中执行此操作,或者在模型中执行更好的操作

在这种情况下,您可能希望控制器用于新操作和(特别是)编辑操作,并可能为该信息创建一个实例变量。您可以从数据库中选择值、添加手动选项、使用if-then或其他任何选项来正确设置对象


最好的(总是)是尝试在模型级别解决这个问题。您可以使用模型方法查看现有的兵役价值,然后返回相关信息——即使是真/假值,因为布尔值也很好。只需确保在执行此操作之前正确准备属性(以匹配数据库)。save's

我恐怕这里仍然有点模糊。假设我向模型中添加方法,该方法返回值:在陆军服役(我可能可以执行类似于
attr\u访问器:在陆军服役
)。我是否仍然需要在视图中进行检查,以查看值是什么,并根据值确定是否检查了按钮?我恐怕这里仍然有点模糊。假设我向模型中添加方法,该方法返回值:在陆军服役(我可能可以执行类似于
attr\u访问器:在陆军服役
)。我是否仍然需要在视图中进行检查,以查看值是什么,并根据值确定是否选中按钮?
<div class="rounded-block semi-wide clear">
  <h4>Military Service</h4>
  <%= f.radio_button :served_in_us_army, false %>
  <%= label :served_in_us_army, 'NO', {:style => 'display:inline'} %>
  <%= f.radio_button :served_in_us_army, true %>
  <%= label :served_in_us_army, 'YES', {:style => 'display:inline'} %>
  <%= f.radio_button :served_in_us_army, " ", :checked =>  matching_profile.served_in_us_army.nil? %>
  <%= label :served_in_us_army, "Either", {:style => 'display:inline'} %>
  <%= f.error_message_on :served_in_us_army %>
</div>