当使用路径传递时,我能否在控制器方法中使用布尔参数?
Am I able to use a boolean parameter in a controller method when it's passed using a path?
这是在我的索引视图中,我想访问类似的内容:false/true 参数
<%= link_to like_theory_path(theory, like: true), method: :post do %>
<i class="glyphicon glyphicon-thumbs-up"></i>
 
<%= theory.thumbs_up_total %>
<% end %>
 
 
<%= link_to like_theory_path(theory, like: false), method: :post do %>
<i class="glyphicon glyphicon-thumbs-down"></i>
 
<%= theory.thumbs_down_total %>
<% end %>
这是我的控制器
if :like
if like.like
like.delete
else
like.delete
like = Like.create(like: params[:like], theorist: current_user, theory: @theory)
like.valid?
end
else
binding.pry
if like.like
like.delete
like = Like.create(like: params[:like], theorist: current_user, theory: @theory)
like.valid?
else
like.delete
end
end
所以无论 :like 是真还是假,它都不会触发 else 语句。
我使用的是否正确,或者它在技术上根本不是一个参数?
link_to
助手通过 params
散列传递参数。 params
散列包含 string
类型的值,所以不,您不能传递布尔值。
然而,您可以做的是传递布尔值的其他表示形式,如“1”或“0”,或 "true" 或 "false",并创建一个实际的布尔值对应于那些在你的控制器方法中传递的值。
您可能想要创建一个虚拟属性,以便字符串 like
不会与模型的布尔值 like
字段冲突。
这是在我的索引视图中,我想访问类似的内容:false/true 参数
<%= link_to like_theory_path(theory, like: true), method: :post do %>
<i class="glyphicon glyphicon-thumbs-up"></i>
 
<%= theory.thumbs_up_total %>
<% end %>
 
 
<%= link_to like_theory_path(theory, like: false), method: :post do %>
<i class="glyphicon glyphicon-thumbs-down"></i>
 
<%= theory.thumbs_down_total %>
<% end %>
这是我的控制器
if :like
if like.like
like.delete
else
like.delete
like = Like.create(like: params[:like], theorist: current_user, theory: @theory)
like.valid?
end
else
binding.pry
if like.like
like.delete
like = Like.create(like: params[:like], theorist: current_user, theory: @theory)
like.valid?
else
like.delete
end
end
所以无论 :like 是真还是假,它都不会触发 else 语句。
我使用的是否正确,或者它在技术上根本不是一个参数?
link_to
助手通过 params
散列传递参数。 params
散列包含 string
类型的值,所以不,您不能传递布尔值。
然而,您可以做的是传递布尔值的其他表示形式,如“1”或“0”,或 "true" 或 "false",并创建一个实际的布尔值对应于那些在你的控制器方法中传递的值。
您可能想要创建一个虚拟属性,以便字符串 like
不会与模型的布尔值 like
字段冲突。