繁体   English   中英

使用Rails jQuery自动完成gem时的Ruby换行

[英]Ruby line break when using rails jquery autocomplete gem

我在应用程序的搜索字段中使用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 %>

问题是,HTML不支持,浏览器不支持<textarea>块之外或<pre>块内的换行符。

您必须使用<br>而不是“ \\ n”或将单独的行包装在<p>标记中,或将输出嵌入以上内容之一。 您可以将文本区域设置为“只读”以关闭该块中的编辑。

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

尝试使用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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM