首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有If条件的jbuilder

具有If条件的jbuilder
EN

Stack Overflow用户
提问于 2015-10-24 04:13:56
回答 2查看 10.1K关注 0票数 4

我试图在jbuilder中的某些条件下显示一个key-value对,如下所示

代码语言:javascript
复制
json.id plan.id
json.title plan.title
json.description plan.description
json.plan_date plan.plan_date.iso8601
json.start_time plan.start_time.strftime("%I:%M %p") if !plan.start_time.present?

误差

代码语言:javascript
复制
NoMethodError at /api/plans/16
==============================

> undefined method `strftime' for nil:NilClass

app/views/api/v1/plans/_plan.json.jbuilder, line 5
--------------------------------------------------

``` ruby
代码语言:javascript
复制
1   json.id plan.id
代码语言:javascript
复制
2   json.title plan.title
代码语言:javascript
复制
3   json.description plan.description
代码语言:javascript
复制
4   json.plan_date plan.plan_date.iso8601

5 json.start_time plan.start_time.strftime(%i:%M%p) if !plan.start_time.present?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-24 04:24:23

嗯,内联if修饰符不适用于jubilder。我的确是这样写的

代码语言:javascript
复制
if plan.start_time.present?
  json.start_time plan.start_time.strftime("%I:%M %p")
end
票数 15
EN

Stack Overflow用户

发布于 2018-04-25 07:56:09

问题是您没有正确地使用括号,因此您的if块没有得到正确的评估。

写作

代码语言:javascript
复制
json.start_time plan.start_time.strftime("%I:%M %p") if !plan.start_time.present?

相当于:

代码语言:javascript
复制
json.start_time(plan.start_time.strftime("%I:%M %p") if !plan.start_time.present?)

正确的写法是:

代码语言:javascript
复制
json.start_time(plan.start_time.strftime("%I:%M %p")) if !plan.start_time.present?

内联if修饰符也适用于jbuilder。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33314487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档