【问题标题】:undefined local variable or method `form' for Class类的未定义局部变量或方法“形式”
【发布时间】:2020-12-21 00:15:04
【问题描述】:

当我尝试在我的 product#new 页面上显示部门视图时,这是我的 product#new 页面

<% @produto.errors.full_messages.each do |msg| %>
<div class="alert alert-danger" role="alert">
    <%= msg %>
</div>   
<% end %>
<%= form_for @produto do |produto| %>
<div class="row">
    <div class="col-sm-3">
        <div class="form-group">
            <%= produto.label :nome %>
            <%= produto.text_field :nome, class:"form-control" %>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-sm-3">
        <div class="form-group">
            <%= produto.label :descricao %>
            <%= produto.text_area :descricao, class:"form-control", rows:"4" %>
        </div>
    </div>
</div>

<div class="row">
    <div class="col-sm-2">
        <div class="form-group">
            <%= form.label :departamento %>
            <%= form.collection_select :departamento_id, @departamentos, :id, :nome, {}, class:"form-control" %>
        </div>
    </div>
</div>
    <%= produto.submit "Criar",class:"btn btn-success" %>
<% end %>

这是我的 product_controller.rb

class ProdutosController < ApplicationController
def index
    @produtos = Produto.order(nome: :asc).limit 5
    @produtos_com_desconto = Produto.order(:preco).limit 1
end

def new
    @produto = Produto.new
    @departamentos = Departamento.all
end 


def create
    valores_produto = params.require(:produto).permit(:nome, :descricao, :preco, :quantidade)
    @produto = Produto.new valores_produto
    #Produto.create valores_produto
    if @produto.save
        flash[:notice] = "Produto criado com sucesso!"
        redirect_to root_url
    else
        render :new
    end
end

def destroy
    id = params[:id]
    Produto.destroy id
    redirect_to root_url
end

def search
    @nome = params[:nome]
    @produtos = Produto.where "nome like ?", "%#{@nome}%"
end

end

所以,当我尝试访问我的产品/新页面时,我收到错误 NameError in Produtos#new: undefined local variable or method `form' for #

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    &lt;%= form.label :departamento %&gt; 正在寻找 form 变量,但没有定义。相反,&lt;%= form_for @produto do |produto| %&gt; 定义了producto 并将其用作&lt;%= produto.label :nome %&gt;。所以你可能想要&lt;%= producto.label :departamento %&gt;

    注意变量应该是form。该变量是 FormBuilder,而不是 Produto。称它为producto 令人困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2018-04-19
      • 2015-01-01
      • 2013-12-17
      相关资源
      最近更新 更多