0 ? number_to_c-6ren">
gpt4 book ai didi

ruby-on-rails - Ruby on Rails if 语句不起作用,尽管变量具有 bool 值

转载 作者:行者123 更新时间:2023-12-04 15:24:15 25 4
gpt4 key购买 nike

      <% if @property.for_sale? %>
<%= @property.price > 0 ? number_to_currency(@property.price, precision: 0) : "For Sale" %>
<% else %>
<%= @property.price > 0 ? number_to_currency(@property.price, precision: 0) : "For Rent" %> / month
<% end %>

for_sale 变量设置为 false

Parameters: { "for_sale"=>"false", "id"=>"3"}

这是将其设置为 false 的代码:

<%= form.select :for_sale, options_for_select({ "Yes" => true, "No" => false }

因此应该运行 else 语句。但是,这并没有反射(reflect)在 View 方面。我在这里缺少什么?

编辑1

“for_sale”变量默认设置为 true。

t.boolean "for_sale", default: true

但是,当我使用上面显示的 options_for_select 代码将其更改为 false 时,它​​仍然保持为 true。

有什么线索吗?

编辑2

解决了! for_sale 变量未包含在 property_params 中

def property_params
params.require(:property).permit(:name, :address, :price, :rooms, :bathrooms, :parking_spaces,:details, :photo, :photo_cache, :for_sale)
end

最佳答案

处理 'false' 是字符串或 false 的 bool 值的一种方法是对值进行类型转换。由于您使用的是 Rails,因此您可以:

ActiveModel::Type::Boolean.new.cast(@property.for_sale)

这将确保 'false'false 都评估为 false

关于ruby-on-rails - Ruby on Rails if 语句不起作用,尽管变量具有 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62633663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com