使用本地Form Builder变量从Controller渲染部分?

时间:2018-08-23 11:12:39

标签: ruby-on-rails ajax ruby-on-rails-5

我有一个“标签”页面,我想向其中添加动态别名。页面上有一个添加新别名的链接。我希望此链接用form.fields_for重新加载我拥有的部分内容,以显示所有当前别名,以及下一个别名的新空白框。

当我第一次加载“编辑标签”页面时,一切正常。当我点击New Alias链接时,我的AJAX请求失败,并显示以下消息。 (undefined local variable or method form' for #<#<Class:0x007fda303623a8>:0x007fda2c6c0e68>。这是因为我通过控制器中的自定义操作加载的部分内容无法理解表单的上下文。


我在这里缺少什么?如何通过AJAX使Alias部分工作?

views / tag / _form.html.erb

<%= form_with model: @tag, local: true do |form| %>
    <%= render 'alias', :form => form %>
    <%= link_to 'New Alias', {controller: :tags, action: :build_alias}, remote: true %>
<% end %>

views / tag / _alias.html.erb

<%= form.fields_for :tag_aliases do |alias_fields| %>
    <%= alias_fields.text_field :alias_name %>
<% end %>

controller / tags_controller.rb

def build_alias
    render partial: 'alias'
end

当控制器不知道form是什么时,如何将build_alias传递给form中的我的部分对象?

form.fields_for是错误的方法吗?

0 个答案:

没有答案