繁体   English   中英

Rails通过非常复杂的条件渲染按钮

Rails render buttons by really complex condition

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的rails应用程序成员可能具有两种不同的角色之一:vip_lite和vip。 他们可以订阅续订授权的计划。

我们还有四种类型的计划:vip_lite /每月,vip_lite /每年,vip /每月,vip /每年。

VIP用户可能正在订购四个计划之一,vip_lite也是如此。 具有不同角色和不同计划的会员可以在计划页面中看到不同的按钮(例如,vip_lite和订阅vip_lite /每月会员可以在VIP计划页面中看到“升级”按钮)。

请参见下面的示例代码:(当前写在帮助器中)

def plan_action_button(user)
  if user.vip? && user.subscribing_plan?(:vip_lite, :monthly)
    'button_a'
  elsif user.vip? && user.subscribing_plan?(:vip_lite, :yearly)
    'button_b'
  elsif user.vip? && user.subscribing_plan?(:vip, :monthly)
    'button_c'
  elsif user.vip? && user.subscribing_plan?(:vip, :monthly)
    'button_d'
  elsif user.vip_lite? && user.subscribing_plan?(:vip, :monthly)
    'button_e'
  elsif user.vip_lite? && user.subscribing_plan?(:vip, :yearly)
    'button_e'      

    ... and so on...
  end
end

因此,对于这些页面中的每个按钮,我必须处理2 * 4 = 8个条件。 Rails中是否有处理这种情况的良好模式? 谢谢

1 个回复

您可以在此处使用一些有趣的模式。 让我们看看最常重复的内容: user.vip?

让我们从Guard子句开始

def plan_action_button(user)
  return 'whatever you need to return' unless user.vip?

  if user.subscribing_plan?(:vip_lite, :monthly)
   'button_a'
[...]

然后,由于存在很多组合,因此很难说出这些按钮的变化和保持不变。 是I18n钥匙吗? 按钮标签的链接是否不同? 您是否可以分别访问user.plan_nameuser.plan_frequency等这些部分?

回答这些问题将有助于您发现一种模式。

1 使用 v-for 在 vue js 3 中渲染非常复杂的对象

我从字典 API 中得到了一个非常复杂的对象,所以我很困惑如何在 vue js 中使用 v-for 渲染它。 下面是对象 我的目标很简单,在 vue js 中使用 v-for 渲染对象中每个含义的每个定义。 对象结构如下 数据 -> 含义 -> 定义 -> 定义(多个定义) ...

2 非常复杂的XQuery转换

我有一个非常复杂的XQuery要编写(至少按照我的标准)。 这是我的输入xml: 在我的输出xml中,操作应作为属性附加到“ request1”元素。 因此,基于request1元素下的action元素,request1元素的属性应为以下之一: 不仅如此,我还需要根据元素 ...

2013-03-21 15:00:22 1 139   xquery
3 非常复杂的SELECT

我想在更多的表(4个以上)之间进行复杂的SELECT,以对项目进行排序和计数。 到目前为止,这是我的路线: 它工作了一半,但是当我添加SQL的后半部分时,它显示了意外的值,并且以某种方式使它们加倍。 基本上,我有myl_users (记录标签的集合) myc_contacts ...

2012-12-30 18:09:38 2 82   mysql
4 复杂的条件渲染

我有2个版本的组件,一个移动响应版本和一个台式机。 现在,呈现任何一个组件之前都需要满足几个条件,如下所示: 但是,这似乎不起作用,并且组件的移动版和桌面版均已呈现。 我只会在(size === "small" || size === "extra-small")部分出现问题: ...

5 AutoMapper:如何映射非常复杂的对象

我有一个带有Users字段的Chat对象。 它是User对象的数组( IQueryable )。 每个User对象都有Name , E-mail等字段。 如何以ChatDTO对象将字段Users字段作为字符串的方式映射此Chat对象? 我希望字符串只是用逗号分隔的用户名。 ...

6 解析逻辑证明非常复杂

我有一个必须解析的字符串,从中正确设置了一个类vars。 字符串结构不良,但我无法更改。 我已经尝试解析它,但是没有一个很好的方法来毫无问题地进行解析。 字符串本身是一组属性和参数,用于从cmd行触发exe。 我以一种易于阅读的方式进行了布局,但知道它是1个连续的字符串。 以下 ...

2016-01-27 11:45:25 3 62   c#/ regex
7 SQL-非常复杂的查询

我在处理一个复杂的大型查询时遇到了困难: 该查询为我提供了事件,它按出勤表对它们进行排序,还为我提供了有关事件发生地点的信息。 无论如何,问题出在哪里……每个用户的年龄和地区都不同。 例如:年龄:{17-18},{20-22}地区:{0},{1},{2} 每个事件都有相同的 ...

2012-02-27 16:00:59 1 170   mysql/ sql
9 Rails:并行渲染复杂视图

我有一个类似的观点: 我已经使用片段缓存来加速下一个请求。 但是,当缓存处于冷态时,请求速度非常慢。 是否有一种可靠的方法可以并行渲染每个元素? (或至少同时,如果使用 MRI) 请注意,每个元素(即餐厅菜单)相互独立。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM