【问题标题】:create a form object in controller在控制器中创建一个表单对象
【发布时间】:2014-10-28 21:27:37
【问题描述】:

我有一个使用 fields_for 嵌套视图的 rails 表单:

new.html.erb

<%= form_for @leads do |f| %>
  <%= f.text_field :some_field %>
  <%= f.fields_for :tickets do |ticket_builder| %>
    <%= render 'tickets', f: ticket_builder %>
  <% end %>
<% end %>

_tickets.html.erb

f.text_field :some_other_field

在某些情况下,我需要通过 ajax 添加部分票证,因此我需要通过控制器操作呈现该部分票证:

  def add_ticket
    resp = {}

    resp[:html_options] = render_to_string(partial: "tickets", locals: { f: nil } )

    render text: resp.to_json
  end

很明显,由于传递给部分的 f 变量为零,它应该是一个表单构建器。

如何将表单构建器从控制器传递给部分?

【问题讨论】:

  • 事实上 - 如果没有钩子,你就无法实现它,之后下一个开发人员会诅咒你:) 取决于你想要什么更好地使用另一个解决方案。例如,如果你想动态添加门票,你可以试试这个 gem github.com/nathanvda/cocoon

标签: ruby-on-rails


【解决方案1】:

只需放入您的控制器中:

include ActionView::Helpers::FormHelper

【讨论】:

  • 这可能行得通,但我在 railscasts 中使用了称为嵌套模型的技术,它允许我将表单内容粘贴到 html 选项字段中,因此我以后可以在不使用 ajax 请求的情况下检索它。
  • 确实如此,即使我使用了不同的技术,我也只是将其标记为正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多