Ruby on Rails条件展示:回调JSON映射后视图显示布尔值的正确方法
解决方案
1. 优化资源类的方法
你的some_method目前需要手动传入参数,但资源类初始化时已经把some_other_field的值存入了@field实例变量,因此可以将方法改造为无参的实例方法,直接复用内部值,同时遵循Ruby布尔方法的命名规范(以?结尾):
class SomeClassResource attr_reader :field def initialize(attrs = {}) @field = attrs['some_other_field'] end # 语义化命名的布尔方法,直接使用实例变量判断 def matches_target_string? @field == 'aString' end end
2. 控制器中传递资源实例到视图
假设你已经从回调接口获取并解析了JSON数据(存为response_json哈希),在控制器动作里实例化资源类并传递给视图:
# 示例控制器动作 def show # 模拟获取并解析回调JSON response_json = HTTP.get('回调接口地址').parse @resource = SomeClassResource.new(response_json) end
3. 视图中显示布尔值
根据需求选择不同的显示方式:
直接显示原生布尔值
在ERB视图中直接调用方法,会输出true或false:
<%= @resource.matches_target_string? %>
友好格式化显示
如果需要更易读的展示形式,比如文本或状态控件:
<%# 显示中文文本 %> <%= @resource.matches_target_string? ? '匹配' : '不匹配' %> <%# 显示禁用的勾选框(仅展示状态) %> <%= check_box_tag nil, nil, @resource.matches_target_string?, disabled: true, class: "status-checkbox" %>
内容的提问来源于stack exchange,提问作者panza
相关产品推荐
相关产品推荐

