2016-09-28 12 views
0

Я использую simple_form, и я хочу, чтобы только value: @image.start_at.strftime("%m/%d/%Y %I:%M %p") %> выполнял, если значение имеет значение @ image.start_at.Как я могу сказать, что значение имеет отображаемое значение, в противном случае оставить достаточно достаточно одного с simple_form?

<div class="input-group date" id="datetimepicker"> 
    <%= f.text_field :start_at, class: 'form-control', value: @image.start_at.strftime("%m/%d/%Y %I:%M %p") %> 
    <span class="input-group-addon"> 
     <span class="glyphicon glyphicon-calendar"></span> 
    </span> 
</div> 

Например, это от моего образа создания/обновления _form и это работает, казалось бы, точно, как я хочу, чтобы, если у меня уже есть изображение, которое имеет значение start_at. Однако, когда я создаю новый образ и нет значения start_at, как я могу сказать, не пытайтесь поместить это значение во вход? Меня не интересует значение по умолчанию.

ответ

1
<%= f.text_field :start_at, class: 'form-control', value: @image.start_at? ? @image.start_at.strftime("%m/%d/%Y %I:%M %p") : nil %> 

на основе @luissimo «ы ответа

+2

**' значение: @ image.start_at.try (: strftime, "% m /% d /% Y% I:% M% p") '** –

+0

это более элегантно – Lenocam

0

Вы можете сделать что-то подобное?

<div class="input-group date" id="datetimepicker"> 
    <%= f.text_field :start_at, class: 'form-control', value: @image.start_at.strftime("%m/%d/%Y %I:%M %p") if @image.start_at.present? %> 
    <span class="input-group-addon"> 
     <span class="glyphicon glyphicon-calendar"></span> 
    </span> 
</div> 

который ставит, если заявление рядного со значением

0

Проверить заготовку и присвоить значение соответствующим образом:

<% @image.start_at.blank? ? starts_at = nil : starts_at = @image.start_at.strftime("%m/%d/%Y %I:%M %p") %> 
<div class="input-group date" id="datetimepicker"> 
    <%= f.text_field :start_at, class: 'form-control', value: starts_at %> 
    <span class="input-group-addon"> 
     <span class="glyphicon glyphicon-calendar"></span> 
    </span> 
</div> 
+0

Это удалена весь поле ввода. – Lenocam

+0

Попробуйте обновленную версию. В основном это просто изменит значение, используемое в зависимости от того, что у вас есть. – bkunzi01

0

Вы можете сделать что-то вроде этого:

Использования a за исключением заявления

<%= f.text_field :start_at, class: 'form-control', value: @image.start_at.strftime("%m/%d/%Y %I:%M %p") unless @image.start_at.nil? %> 

Использование если оператор

<%= f.text_field :start_at, class: 'form-control', value: @image.start_at.strftime("%m/%d/%Y %I:%M %p") if @image.start_at.present? %> 

Использование если/другое заявление

<%= f.text_field :start_at, class: 'form-control', value: @image.start_at.nil? ? @image.start_at.strftime("%m/%d/%Y %I:%M %p") : 'no value' %> 
+0

Первые два удалили текстовое поле ввода и третье нажали и запустили ошибку ... это один: 'undefined method' strftime 'для nil: NilClass' – Lenocam

+0

Итак, я адаптировал ваш последний пример вместо того, чтобы проверять истинное значение nil? Я проверил истину, а не ноль, и вместо того, чтобы оставить «никакой ценности», я поставил нуль. '<% = f.text_field: start_at, class: 'form-control', value: @ image.start_at? ? @ image.start_at.strftime ("% m /% d /% Y% I:% M% p"): nil%> ' – Lenocam

+0

Хорошо, рад, что это вам помогло по правильному пути :) – luissimo