无法获取复选框以在Ruby中使用条件语句

时间:2013-08-10 16:06:03

标签: ruby-on-rails ruby conditional-statements

提前感谢您的帮助!我正在为用户提供一种查看他们在MySQL数据库中保存的信息的方法。问题是我的复选框状态没有根据用户在记录中保存的内容加载。

    <% if !params[:newitem_id].blank? and @newitem.optimize != 1 %>
    <input type="checkbox" name="optimize" id="optimize">
    <% else %>
    <input type="checkbox" name="optimize" id="optimize" checked="true">
    <% end %>

我的条件语句首先查看是否有newitem_id。这是一个隐藏字段,它只是将所有@newitem信息与视图连接起来。

    <input name="newitem_id" type="hidden" value="<%= params[:newitemid] %>" />  

当我在页面上其他地方的条件语句中使用它时,这很好用。

接下来,我的条件语句查看@newitem的记录,看看optimize是1还是0.如果@ newitem.optimize是1,我想要选中复选框。如果没有,我不想检查它。

不幸的是,即使字段为0,复选框也显示为已选中。

编辑1

newitemlookup.html.erb是带有复选框的表单所在的视图。我对它进行了一些更改,并添加了我的控制器中的代码。但是,我的所有复选框都会被选中,即使它们不应该是。

我还想看看“@ newitem.optimize”返回的值是什么,结果是数据库中的1和0在视图中显示为“true”和“false”当我执行&lt; ;%= @ newsavedmap.optimize%&gt;。这可能是问题吗?

newitemlookup_controller

    if params[:newitemid]
    @newitem = Newitem.find(:first, :conditions => {:id => params[:newitemid]})

newitemlookup.html.erb

    <% if params[:newitemid] and @newitem.optimize = false %>
    <input type="checkbox" name="optimize" id="optimize">
    <% else %>
    <input type="checkbox" name="optimize" id="optimize" checked="true">
    <% end %>

2 个答案:

答案 0 :(得分:0)

我做了一些研究并想出了如何添加一个复选框来查看记录然后返回结果。这是我使用的代码。这取代了if / then语句。

    <%= check_box_tag 'optimize', '1', @newitem.optimize %>

答案 1 :(得分:0)

如果您正在使用像f这样的表单构建器:

 <%= check_box_tag 'optimize', '1', f.object.optimize %>