我正在努力,我认为这是一个简单的问题。我正在创建一个注册表单,您可以在其中创建帐户和一个用户(一个帐户可以有许多用户)。但是,在加载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 %>
我无法找到其他完全相同的问题(最近的一个是邮件模板的问题,但找不到连接)。
希望我能正确地引导我,因为我对此视而不见。
答案 0 :(得分:0)
我在@vise的帮助下发现了错误。我以某种方式将项目创建为API项目,并且在我的application_controller.rb中,它是从API而不是Base继承的。
我对此进行了更改并添加:
protect_from_forgery with: :exception
它奏效了。感谢您的帮助!