未定义的方法“ protect_against_forgery?”对于#<#<Class

时间:2019-11-30 21:38:11

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

我正在努力,我认为这是一个简单的问题。我正在创建一个注册表单,您可以在其中创建帐户和一个用户(一个帐户可以有许多用户)。但是,在加载new.html.erb视图时,出现以下错误:

undefined method `protect_against_forgery?' for #<#<Class:0x00>

account_controller.rb如下:

class AccountController < ApplicationController

    def new 
        @account = Account.new
        @account.users.build
    end

end

视图:

    <h2>Create account</h2>

  <%= form_with model: @account, url: :new_account do |f| %>
      <%= render 'shared/error_messages', :object => f.object %>

      <h4><%= f.label :name, 'Account Name' %></h4>
      <%= f.text_field :name, :required => true, :placeholder => 'Your account name' %>


      <%= f.fields_for :users do |user_form| %>
          <h4><%= user_form.label :name %></h4>
          <%= user_form.text_field :name, :autofocus => true, :required => true, :placeholder => 'Your name' %>


          <h4><%= user_form.label :email %></h4>
          <%= user_form.email_field :email, :required => true, :placeholder => 'Your email' %>


          <h4><%= user_form.label :password, :required => true %></h4>
          <%= user_form.password_field :password, :required => true, :placeholder => 'Enter a 8 character password'%>

          <h4><%= user_form.label :password_confirmation, :required => true %></h4>
          <%= user_form.password_field :password_confirmation, :required => true, :placeholder => 'Confirm password' %>

          <div class="remember-me">
              <%= f.check_box :terms_and_conditions %>
              <%= link_to 'Accept terms and conditions', 'todo', :target => '_blank' %>
          </div>
      <% end %>

      <input type="submit" class="btn" value="Create account" />
  <% end %>

我无法找到其他完全相同的问题(最近的一个是邮件模板的问题,但找不到连接)。

希望我能正确地引导我,因为我对此视而不见。

1 个答案:

答案 0 :(得分:0)

我在@vise的帮助下发现了错误。我以某种方式将项目创建为API项目,并且在我的application_controller.rb中,它是从API而不是Base继承的。

我对此进行了更改并添加:

protect_from_forgery with: :exception

它奏效了。感谢您的帮助!