在我的索引页面中,我尝试创建一个包含表单的模式,以便用户可以在索引页面上创建用户。我正在使用设计来创建这些用户。
但是,当我尝试在模态中为此创建表单时,我收到此错误。
表单中的第一个参数不能包含nil或为空
<%= form_for @user, html: { multipart: true } do |form| %>
...
<% end %>
这是我的控制器:
class UsersController < ApplicationController
before_action :find_account, only: [:index, :new, :create]
def index
if params[:email].present?
@users = User.where(email: params[:email]).first
else
@users = User.all
end
respond_with @users
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to root_url, notice: 'User was sucessfully created' }
else
format.html { render :new }
end
end
end
private
def user_params
params.require(:user).permit(:email, :first_name, :last_name, :password)
end
def find_account
@account ||= Account.find(params[:account_id])
end
end
用户是嵌套路由,因为它属于某个帐户:
new_account_user GET /accounts/:account_id/users/new(.:format) users#new
有人知道我为什么会收到这个错误吗?由于我在控制器中创建@user
变量并在before_action中找到account_id
,因此我不确定问题是什么。
如果我以另一种形式实现此功能,则会产生相同的错误。可能与此有关的事情不在正确的操作页面上?
答案 0 :(得分:0)
您定义了@user
,但在表单中使用@material
,当然@material
为nil
- &gt;抛出错误。
如果用户属于帐户,则表单应为:
<%= form_for [@account, @user], html: { multipart: true } do |form| %>
...
<% end %>
如果用户是独立的,那么表格应为:
<%= form_for @user, html: { multipart: true } do |form| %>
...
<% end %>