我有一个接受URL params(支持书签)的表单,其外观和工作方式如下:
<%= f.url_field :url, :value => params[:u] %>
然而,当重新渲染时(例如,在验证错误的情况下,内容被剥离。
我想做的是这样的事情,这样:value =>
只有在第一个地方有params时才会呈现:
<%= f.url_field :url, :value => params[:u] if params[:u] %>
当然,这甚至不会渲染该领域而且是错误的。
如何将if / unless条件添加到ERB块中?无尽的搜索并没有发现太多,但我可能正在寻找错误的东西。
答案 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
是模型对象。