Ruby on rails Liquid Ruby模板引擎可以处理Rails表单吗?

Ruby on rails Liquid Ruby模板引擎可以处理Rails表单吗?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,liquid,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,Liquid,Ruby On Rails 4,我一直在寻找一个模板引擎,使用户可以轻松地在线创建课程和练习。似乎是Rails中最常用的模板引擎。Liquid用户可以轻松创建rails表单吗 通常,我在ERB中创建表单时使用: <%= form_for(@lesson) do |f| %> <% if @lesson.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@lesson.error

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

似乎是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中创建过滤器、标记和/或块来模拟Rails表单标记吗?

您可以用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)

这个答案是不完整的,你如何让csrf功能工作?实际上它是完整的,你读过并尝试过代码吗?form_标记将在表单中呈现csrf标记,您可以从液体模板调用form_标记。一旦你尝试代码并检查它是否按预期工作,请告诉我,这样我可以帮助你调试问题。我已经尝试了代码,但它对我不起作用。我不久前开始问这个问题:但它搁浅了。你知道我是否需要以不同的方式添加控制器,或者你是否使用除液体宝石以外的宝石?如何在应用程序中调用render方法?我今天将检查它并为您提供一个示例项目:)
text = " {% liquid_form %} Form content {% endliquid_form %} "
@template = Liquid::Template.parse(text)