【问题标题】:undefined local variable or method `maindata_form' in rails 4rails 4中未定义的局部变量或方法“maindata_form”
【发布时间】:2015-11-09 15:57:52
【问题描述】:

我的两个模型

Maindata.rb

has_many :applications, :dependent => :destroy, :autosave => true
accepts_nested_attributes_for :applications

应用程序.rb

belongs_to :maindata
accepts_nested_attributes_for :maindata

在保存主数据的表单中,我也渲染了部分应用程序

<%= form_for @main_data do |maindata_form| %>
  <% 3.times { @maindata.applications.build } %>  
  <%= maindata_form.fields_for :applications do |builder| %>                   
    <%= render 'application', maindata_form: builder %>    
  <% end %>
<% end %>

和应用部分

      <div>
        <%= maindata_form.label :uni_id, "University" %> ***
        <%= maindata_form.collection_select :uni_id, @unis, :id, :bezeichnung, {:include_blank => true} %>
      </div>

当我加载表单时,我在星号标记的行出现错误

#

的未定义局部变量或方法 `maindata_form'

这是语法错误还是我遗漏了什么?

【问题讨论】:

  • 您是否希望在某处定义maindata_form?您是否在控制器中将其定义为局部变量?如果是这样,那么它不会传递到视图,而是使用实例变量。
  • 我在新操作中定义了@main_data。还用表单代码中的更多细节更新了我的问题。

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

我假设您正在尝试从模型创建表单。在这种情况下,您应该:

首先:在控制器方法中赋值变量@main_data = Maindata.new

第二个:这个变量把它链接到表格,例如:

<%= form_for @main_data do |f| %>
<div>
<%= f.label :uni_id, "University" %> ***
<%= f.collection_select :uni_id, @unis, :id, :bezeichnung, {:include_blank => true} %>
</div>
<% end %>

【讨论】:

  • 基本上我做了同样的事情,我已经更新了问题中的表单代码。还是一样的错误。
【解决方案2】:

您应该使用 :render 和 :locals 参数调用渲染:

<%= render partial: 'application', locals: { maindata_form: builder } %> 

【讨论】:

    猜你喜欢
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多