我有一个“标签”页面,我想向其中添加动态别名。页面上有一个添加新别名的链接。我希望此链接用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
是错误的方法吗?