5

我正在使用 haml 3.1.4 和 haml-rails 0.3.5

我遇到的问题仅发生在服务器(生产)和本地(测试)上,但不在开发中(两者似乎都使用相同的 gem 版本)

=form_for @thing, :remote => true do |f|
  =hidden_field_tag :template, 'thing'
  %table
    %thead
      %tr
        %th
          Name
        %th
          =image_tag 'cancel.png'
    %tbody
      =f.fields_for :items do |item_fields|
        %tr
          %td
            =f.text_field :name
          %td
  =f.submit 'Save'

它输出以下 html 保存文本:

<input type='hidden' value='thing' /><table><thead><tr><th>Name</th><th><img src='cancel.png.....' /></tr></thead>

其次是上面呈现的html。

如何缩小测试/生产和开发之间的差异?

有任何想法吗?:)

编辑:值得一提的是,这是页面上“@thing”的第二种形式。第一个渲染得很好,第二个是问题所在。

4

3 回答 3

1

我有几个理论。

空格在haml中非常重要。您是否有可能在某处有标签而在其他地方有空格?

form_for的两个都有remote: true吗?这会创建一些额外的 div 输出,我想如果它重用 id 可能会混淆 DOM。

你确定你使用的是=onform_for因为没有它,它不会输出 HTML 表单标签。

恐怕我只是在猜测,这些都不能解释为什么它在开发中起作用。

也许它有帮助...

于 2013-01-22T00:12:24.707 回答
0

从外观上看,您没有关闭标签,这是您的问题吗?无论如何,关于缩小 test/prod/dev 之间的差异,您确实需要检查/config/文件夹的内容。我可以建议进行测试,您可以使用Rails.env == "development"来选择您的环境,然后尝试调试器并寻找差异。

于 2013-01-21T23:20:59.240 回答
0

您可能正在使用两种不同版本的haml。可能是一个版本对“=”之后的空格更严格。我会这样写:

= form_for @thing, :remote => true do |f|
  = hidden_field_tag :template, 'thing'
  %table
    %thead
      %tr
        %th Name
        %th= image_tag 'cancel.png'
    %tbody
      = f.fields_for :items do |item_fields|
        %tr
          %td= f.text_field :name
          %td
  = f.submit 'Save'
于 2013-01-23T06:47:41.950 回答