我已经阅读了相关文档,但我仍然不知道如何做到这一点。
我在表中有一列:free是一个布尔值
true = free
false = paid
nil = both
我正试图在我的形式中捕捉到同样的逻辑,我正在做一个非常糟糕的工作......到目前为止一切都是免费的
index.html.erb
<div class="field">
<label class="radio">
<%= radio_button_tag(:free, "free", :checked => true) %>
Free
</label>
<label class="radio">
<%= radio_button_tag(:free, "paid") %>
Paid
</label>
<label class="radio">
<%= radio_button_tag(:free, "both") %>
Both
</label>
</div>
resources_controller.rb(我知道这不是理想的,因为它每次都检查params(即使他们输入了错误的信息)但是我不知道如何在不保存的情况下检查是否可以保存它。 ..我甚至不知道我是否做了params正确但我不知道如何检查它。当我做p params[:resources]
时它不会打印它是如何像它一样。有一个很好的方法来做这种铁轨上的东西?
def create
@resource = Resource.new(params[:resource])
if params[:resource][:free] = "free"
@resource[:free] = true
elsif params[:resource][:free] = "both"
@resource[:free] = nil
else
@resource[:free] = false
end
if @resource.save
redirect_to root_url
else
render :action => :new
end
end
resources_helper.rb
def output_free
if @resource.free = true
"Free"
elsif @resource.free = false
"Paid"
else
"Both"
end
end
答案 0 :(得分:2)
这是模糊逻辑,true / false / null。在SQL中存在,你可以使用它,但这是你不想要的魔法。使用Enum和三种状态 - 方式更清晰。
并使用==
进行比较: - )