我有一个搜索表单,用于我的搜索模型。我的问题是,如果存在@search,我只想显示表单的值。我写了这段代码:
<%= f.text_field :keyword, :value => @search.keyword if @search.present? %>
我的问题是,当@search不存在时,不会显示整个表单!我只希望在这种情况下不显示该值!
UPDATE UPDATE :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
我写了一个小帮手:
def value(link)
if @search.present?
value: @search.link
end
end
以我的形式:
<%= f.text_field :keyword, value(keyword) %>
但为什么我会收到这个错误:
s_helper.rb:4: syntax error, unexpected ':', expecting keyword_end value: @search.link
答案 0 :(得分:2)
如果我理解你,如果没有@search,你仍然希望显示空输入。如果是这样,这应该做你想要的:
<%= f.text_field :keyword, :value => @search.try(:keyword) %>
有关try方法的信息,请参阅此文章 - http://everydayrails.com/2011/04/28/rails-try-method.html
答案 1 :(得分:0)
试试这个
<%= f.text_field :keyword, :value => @search.keyword %> <% if @search.present? %>
答案 2 :(得分:0)
我猜你有类似的东西。
<%= form_for @search do |f| %>
将其更改为
<%= form_for (@search || Search.new) do |f| %>
然后从表单字段中删除所有@search...
内容。
答案 3 :(得分:0)
您可以使用通过Rails API提供的present?
方法,
<% if @search.present? %>
<%= f.text_field :keyword, :value => @search.keyword %>
<% end %>
有关详细信息,请参阅here。