4

我一直在寻找一个模板引擎,让用户可以轻松地在线创建课程和练习。

似乎Liquid是 Rails 中最受欢迎的。Liquid 用户可以轻松创建 rails 表单吗?

通常我在 ERB 中创建表单:

<%= form_for(@lesson) do |f| %>
  <% if @lesson.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@lesson.errors.count, "error") %> prohibited this lesson from being saved:</h2>

      <ul>
      <% @lesson.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <div>lots of fields</div>
<% end %>

Rails 会自动插入 CSRF 保护内容。我可以对 Liquid 做同样的事情吗?我可以在 Liquid 中创建过滤器、标签和/或块来模拟 Rails 表单标签吗?

4

1 回答 1

2

您可以使用 Liquid 注册您自己的标签块,但它并不是开箱即用的。

如果您查看文档,您会注意到您可以创建自己的标签块。

您可以注册自己的标签块

class LiquidForm < Liquid::Block
  def initialize(tag_name, markup, tokens)
     super
  end

  def render(context)
    form_tag("/hello_word") do 
      input_tag "hello"
    end
  end
end

Liquid::Template.register_tag('liquid_form', LiquidForm)

然后用液体解析你想要的文本

text = " {% liquid_form %} Form content {% endliquid_form %} "
@template = Liquid::Template.parse(text)
于 2013-03-04T00:32:56.077 回答