使用AJAX修剪字段内容的Rails

时间:2015-08-24 22:34:10

标签: ruby-on-rails ruby ajax json

我有一个名为Content的模型,有两个字段'之前'和'之后'。

在创建记录之前,我会在字段'之前进行一些预处理。并将其存储在'之后。这里没问题。

问题是当我在显示页面加载“'之前的内容”时显示不完整。如果有2个或更多,我会在一段时间后修剪空格...... 例如

"this is.   some text.   with many spaces.   after the periods."

该视图向我显示'之前'看起来像这样:

"this is. some text. with many spaces. after the periods."

如果我查看.json版本之前的'字段包含原始格式 - 为什么rails视图(非json)在'之前显示'作为"修剪"?

这是我的_content.html.erb

<li><%= content.before %></li>
<li><%= content.after %></li>

这是我的show.js.erb

$("#main").html("<%= escape_javascript(render @content) %>");

这是contents_controller.rb中的show定义

  respond_to :html, :json

  def show
    @content = Content.find(params[:id])
    respond_with(@content)
  end

这是我的模型content.rb

中的预处理
class Content < ActiveRecord::Base

    before_validation :format_params

    def format_params
        rm_spaces = /\.\s{2,}/              # regex to rm extra spaces
        new_format = '. '                   # only one space after period
        self.after = before.gsub(rm_spaces, new_format)
    end
end

以下是我的意思截图。

the view

the json

修改 我相信这是因为我尝试了Swards推荐而被执行的代码,但它没有用。

这是我的contents_helper.rb中突出显示功能的代码

def highlight_changes(text)
    highlighter = '<span style= "background: yellow">\1</span>'
    matcher = /(\.\s{2,})/
    text.gsub(matcher, highlighter).html_safe
end

这是show.html.rb中的代码

<p>
  <strong>Before:</strong>
  <!-- call the helper method to highlight changes made -->
  <%= highlight_changes @content.before %>
</p>

1 个答案:

答案 0 :(得分:0)

我认为浏览器省略了额外的空格。您可以使用var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson); var myObject = new O(); if (dyn.typeindicator.Value == "A") { myObject.PropA = dyn.object_I_Need.AAAA.Value; } else { myObject.PropA = dyn.object_I_Need.anotherA.Value; } 来制作空格。

要转换字符串,您可以尝试

&nbsp;

这会用content.before.gsub(' ', '&nbsp;').html_safe 替换每个空格,然后告诉rails不要转义html字符(&nbsp;)。

警告:如果用户输入&nbsp;字段,那么使用before是危险的,因为它可能允许用户注入恶意代码。