if / unless form_for / ERB中的条件

时间:2011-01-16 18:16:23

标签: ruby-on-rails ruby-on-rails-3 erb

我有一个接受URL params(支持书签)的表单,其外观和工作方式如下:

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

然而,当重新渲染时(例如,在验证错误的情况下,内容被剥离。

我想做的是这样的事情,这样:value =>只有在第一个地方有params时才会呈现:

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

当然,这甚至不会渲染该领域而且是错误的。

如何将if / unless条件添加到ERB块中?无尽的搜索并没有发现太多,但我可能正在寻找错误的东西。

4 个答案:

答案 0 :(得分:1)

试试这个...

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

答案 1 :(得分:0)

(我误解了你的问题。可能不是答案......)

在您的视图中尝试此操作

<%= f.url_field @url %>

并在您的控制器中输入

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

这样,除非params为nil,否则您将拥有填写字段的表单。

答案 2 :(得分:0)

对于单行,请尝试:

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

答案 3 :(得分:0)

Farnoy's answer非常接近,但更具体地说是:

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

由于@resource是模型对象。