带有If条件的jbuilder

时间:2015-10-24 04:13:56

标签: ruby-on-rails json ruby-on-rails-4 jbuilder

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

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?

错误

NoMethodError at /api/plans/16
==============================

> undefined method `strftime' for nil:NilClass

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

``` ruby
    1   json.id plan.id
    2   json.title plan.title
    3   json.description plan.description
    4   json.plan_date plan.plan_date.iso8601
>   5   json.start_time plan.start_time.strftime("%I:%M %p") if !plan.start_time.present?

2 个答案:

答案 0 :(得分:10)

好吧,内联on.exit()修饰符不适用于jubilder。我写的就像

if

答案 1 :(得分:0)

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

书写

json.start_time plan.start_time.strftime("%I:%M %p") if !plan.start_time.present?

相当于:

json.start_time(plan.start_time.strftime("%I:%M %p") if !plan.start_time.present?)

正确的写作方式是:

json.start_time(plan.start_time.strftime("%I:%M %p")) if !plan.start_time.present?

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