首页 > 解决方案 > 使用本地表单生成器变量从控制器渲染部分?

问题描述

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

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


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

意见/标签/_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 %>

意见/标签/_alias.html.erb

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

控制器/tags_controller.rb

def build_alias
    render partial: 'alias'
end

当我的控制器不知道是什么时,我如何传递form给我的部分输入?build_aliasform

form.fields_for错误的方法吗?

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

解决方案


推荐阅读