【问题标题】:Rails Haml - end ifRails Haml - 如果结束
【发布时间】:2011-07-25 15:11:15
【问题描述】:

我需要在 HAML 中切换表单声明。

- if params[:action] == 'tomato'
  = form_for @request, :url => 'request/tomato' do |f|
- else
  = form_for @request do |f|

    = f.text_field ...  # form content

  = f.text_field # don't work too

但我不能使用end 将表单声明与表单内容分开,所以我得到 500 internal server error

我怎样才能做到这一点?

【问题讨论】:

  • @Awea 我尝试了这两种变体,我认为 haml 不知道 if 语句在哪里结束,并且在第一种情况下看不到表单内容
  • 第二个 text_field 需要两种形式?

标签: ruby-on-rails haml


【解决方案1】:

试试这个

- args = params[:action] == "tomato" ? {:url => 'request/tomato'} : {}
= form_for @request, args do |f|
  = f.text_field :field_one
  = f.text_field :field_two

【讨论】:

  • 不错,但你的缩进也全错了——第三行和第四行缩进了两个以上的空格
  • @stephenmurdoch 他可能使用制表符而不是空格
  • 软标签总是更好^^
  • 我有很多相同的方法 - 因为它非常相似所以不会发布,但这是我使用这种方法的理由:你需要保留你的父母(表单)和孩子(text_files)在同一范围内。 Haml 会自动关闭如果你和你的表单,所以你的番茄参数永远不会在你的例子中得到一个 text_field
  • 我从 OP 的帖子中复制。我用了 2 个空格,他用的是制表符
【解决方案2】:

由于 Haml 处理缩进,因此在 If 之后不需要 End 语句。

确保您的“if”和“else”对齐,并将应该出现的任何内容放在正确的缩进处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多