If / Unless Условные выражения в form_for / ERB - PullRequest
0 голосов
/ 16 января 2011

У меня есть форма, которая принимает параметры URL (для поддержки букмарклета), которая выглядит и работает так:

<%= f.url_field :url, :value => params[:u] %>

Однако при повторной визуализации (например, в случае ошибки проверки содержимое удаляется).

Я хотел бы сделать что-то вроде этого, чтобы :value => отображалось только в том случае, если в первую очередь есть параметры:

<%= f.url_field :url, :value => params[:u] if params[:u] %>

Конечно, это даже не отображает поле и неправильно.

Как добавить условные операторы if / разве что в блок ERB? Бесконечные поиски не очень много, но я, вероятно, ищу не ту вещь.

Ответы [ 4 ]

1 голос
/ 16 января 2011

Попробуйте это ...

<%= f.url_field :url, :value => (params[:u] if params[:u]) %>
0 голосов
/ 17 января 2011

Ответ Фарного был очень близок, но более конкретно это было:

<%= f.url_field :url, :value => (params[:u] || @resource[:url]) %>

Как @resource был модельным объектом.

0 голосов
/ 16 января 2011

Для однострочника попробуйте:

<%= f.url_field :url, :value => (params[:u] || 'any_other_value_or_just_nil') %>
0 голосов
/ 16 января 2011

(Я неправильно понял ваш вопрос. Вероятно, не ответ ...)

Попробуйте это на ваш взгляд

<%= f.url_field @url %>

и в вашем контроллере введите

@url = Url.new(params[:u])

Таким образом, у вас будет форма с заполненными полями, если параметр не равен nil.

...