ruby-on-rails - 使用部分而不是助手渲染表单?

标签 ruby-on-rails

我正在构建一个应用程序,使用部分而不是现有的构建器方法来呈现表单字段(例如email_field)会更有利。举个例子,如果有这样的东西会很有帮助:

<%= rendered_form_for @article do |f| %>
  <%= f.text_field :title %> # renders /forms/text_field
  <%= f.email_field :author %> # renders /forms/email_field
  <%= f.submit "Create" %> # renders /forms/submit
<% end %>

我尝试按照 the docs 创建一个表单生成器:

# Used with rendered_form_for (a helper that injects this builder)
class RenderedFormBuilder < ActionView::Helpers::FormBuilder
  def email_field(attribute, options={})
    options.merge! attr: attribute
    render partial: '/forms/email_field', **options
  end
end

不幸的是,render 方法在此上下文中不存在,因此会引发错误。

关于如何使用部分而不是帮助器呈现表单有任何提示或建议吗?预先感谢您。

最佳答案

有一个名为@template的属性,它可以提供render方法。代码可以重构为:

# Used with rendered_form_for (a helper that injects this builder)
class RenderedFormBuilder < ActionView::Helpers::FormBuilder
  def email_field(attribute, options={})
    options.merge! attr: attribute
    @template.render partial: '/forms/email_field', locals: options
  end
end

还在 locals 哈希中进行编辑,以在渲染的部分中定义本地值。

关于ruby-on-rails - 使用部分而不是助手渲染表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44510405/

相关文章:

ruby-on-rails - 如何阻止 Rails 为没有 ID 的连接表调用 next_seq?

ruby-on-rails - 具有自定义收集顺序的 ActiveAdmin has_many

ruby-on-rails - 生成电子邮件地址图像或其他不易被抓取的内容

ruby-on-rails - 743 : unexpected token at '‹' happens using picasa gem in ruby on rails

ruby-on-rails - Rails 4 - Yaml 配置文件

ruby-on-rails - 没有 '_ids' 后缀的 Mongoid has_and_belongs_to_many?

ruby-on-rails - Rails 语言环境开发服务器 "rails s"同时服务多个请求

ruby-on-rails - 如何在 Rails 中实现跨浏览器 @font-face 支持

ruby-on-rails - 如何将我的字符串转换为数组? (JSON.parse 错误)

ruby-on-rails - 尝试从 Rails 控制台使用 JSON 语法测试 HTTP 请求