0

我在我的应用程序的搜索字段中使用 jQuery 自动完成功能。该字段搜索并返回地址作为哈希。我需要在哈希值之间添加一个换行符,但我所做的一切都不起作用。

在我的控制器中,我有:

autocomplete :restaurant, :name, :display_value => :funky_method, :extra_data => [:id, :address, :city, :state, :zip_code`]

在我的模型中,我有:

def self.search(search)
  if search
    where('id @@ ?', search)
  else
    scoped
  end
end

在我的模型中,我尝试了以下方法:

def funky_method
  "#{self.id}" + "\n" + "#{self.name}" + "\n" + "#{self.address}" + "\n" + "#{self.city}" + "\n"  + "#{self.state}" + "\n" + "#{self.zip_code}"
end

和:

def funky_method
  "#{self.id}" + "<br />" + "#{self.name}" + "<br />" + "#{self.address}" + "<br />" + "#{self.city}" + "<br />"  + "#{self.state}" + "<br />" + "#{self.zip_code}"
end

和:

def funky_method
  "#{self.id}" + <br /> + "#{self.name}" + <br /> + "#{self.address}" + <br /> + "#{self.city}" + <br />  + "#{self.state}" + <br /> + "#{self.zip_code}"
end

在我看来,我有:

<%= form_tag users_path do %>
    <p>Please select a restaurant First</p>
        <%= autocomplete_field_tag :search, params[:search], autocomplete_restaurant_name_users_path, :value_method => :id %>
            <%= submit_tag "Next", :name => nil, :id => "submit" %>
    <% end %>
4

3 回答 3

0

<textarea>问题是,HTML 不会,浏览器也不会,在块外或块内接受换行符<pre>

您必须使用<br>而不是 "\n" 或将各个行包装在<p>标签中或将您的输出嵌入到上述之一中。您可以将 textarea 设置为“只读”以关闭块中的编辑。

您可以在 Ruby/服务器端执行此操作,或者让 jQuery 在插入文档之前执行此操作。

于 2013-07-22T22:00:00.960 回答
0

尝试使用html_safe

  def funky_method
    "#{self.id} <br /> #{self.name} <br /> #{self.address} <br /> #{self.city} <br /> #{self.state} <br /> #{self.zip_code}".html_safe
  end
于 2013-07-22T22:01:34.373 回答
0

实现此目的的其他几种方法:

加入\nActionView::Helpers::TextHelperhttp://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format)模块。此方法在每次找到后附加一个<br />标签,\n但不会删除它。

def funky_method
  simple_format([ self.id, self.name, self.address, self.city, self.state, self.zip_code ].join('\n'))
end

或者没有上述TextHelper模块:

加入方式<br />

def funky_method
  [ self.id, self.name, self.address, self.city, self.state, self.zip_code ].join('<br />').html_safe
end
于 2013-07-22T22:48:05.227 回答