【问题标题】:NoMethodError in Users#new "undefined method `simple_form_for' for #<#<Class:0x9f9b568>:0xaa02440>"用户中的 NoMethodError#new “#<#<Class:0x9f9b568>:0xaa02440> 的未定义方法 `simple_form_for'”
【发布时间】:2015-12-16 04:59:58
【问题描述】:

我在视图/用户中的 new.html.erb 代码:

 <h1>Sign Up</h1>

 <%= simple_form_for(@user) do |f| %>
 <%= f.input :username %>
 <%= f.input :password %>
 <%= f.input :password_confirmation %>
 <%= f.button :submit %>
 <% end %>

这是错误:

 undefined method `simple_form_for' for #<#<Class:0x9f9b568>:0xaa02440>

我知道这个错误要求什么:

 def simple_form_for
 end

但问题是放在哪里。 这也是我的 users_controller.rb:

 class UsersController < ApplicationController
     def new
          @user = User.new
     end

     def create
         @user = User.new(params[:user])
         if @user.save
             redirect_to @user, notice: 'User was successfully created.'
         else
             render action: "new"
         end
     end

     def show
         @user = User.find(params[:id])
     end
 end

【问题讨论】:

  • 我假设您正在尝试使用此 gem?:github.com/plataformatec/simple_form。如果是这样,按照说明将其正确包含在您的 gemfile 中应该可以使其正常工作。您不必自己定义此方法。

标签: ruby-on-rails nomethoderror


【解决方案1】:

这根本不是它所期望的。

simple_form_for 表示您的应用程序期望有可用的简单表单 (https://github.com/plataformatec/simple_form) gem,它为您的表单提供了该方法以供使用。您应该安装 gem,将它添加到您的 Gemfile 中,或者重写您的表单以使用 Rails 表单助手而不是简单表单。

【讨论】:

  • 我确实安装了 gem,但安装了引导程序
  • 它是您应用程序的一部分吗,即。包含在您的Gemfile 中?
  • 嗯。您可以尝试在您的视图中从&lt;%= simple_form_for 中删除= 吗?
  • 还是一样...没什么区别
【解决方案2】:

如果它没有找到方法但你已经安装了 gem。在那种情况下,我认为您忘记重新启动服务器。重新启动服务器,它将工作。

【讨论】:

    【解决方案3】:

    Gemfile: gem 'bootstrap-sass'
    宝石'simple_form'

    你必须有一个引导设置 "rails 生成 simple_form:install --bootstrap"

    【讨论】:

      【解决方案4】:

      你的问题是rails没有方法simple_form_for你可以试试form_for 并阅读更多http://guides.rubyonrails.org/getting_started.html

      【讨论】:

        【解决方案5】:

        错误基本上是说simple_form_for方法不可用(如你所知)。

        解决方案是确定什么该方法是什么,以及需要如何使用它。


        Simple Form

        该错误是由简单表单在您的应用中不可用引起的。

        要包含它,您只需添加 gem:

        #Gemfile
        gem 'simple_form'
        

        --

        如果你没有安装 simple_form gem,你可以使用 Rails 的 form_for 来解决这个问题,这并没有太大的不同:

        <%= form_for @user do |f| %>
           <%= f.text_field     :username %>
           <%= f.password_field :password %>
           <%= f.password_field :password_confirmation %>
           <%= f.submit %>
        <% end %>
        

        【讨论】:

        • 我尝试了使用 form_for 而不是 simple_form_for 的方式,它显示了这一点:undefined method 'users_path' for #&lt;#&lt;Class:0xa025490&gt;:0xaeeded0&gt;
        • 你有哪些路线?
        猜你喜欢
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 2016-09-11
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        • 2019-06-14
        • 2023-04-09
        相关资源
        最近更新 更多