Rails - 无法访问视图中的实例变量

时间:2016-09-14 08:41:21

标签: ruby-on-rails ruby ruby-on-rails-4

控制器:

def store
  if params[:name].present? && params[:pass].present? && params[:cpass].present? && params[:role].present?
    @name = params[:name].downcase

    if CheckEmpName(@name) == 0     
      render "userexist"
      return
    end

    pass = params[:pass]
    cpass = params[:cpass]

    if pass != cpass                
      render "passerror"
      return
    end

    role = params[:role]

    @user = Employee.new(name: @name, password: pass, role: role)
    @user.save

  end
  render "success"
end

当所有用户输入有效时,上述操作会呈现“success.html.erb”页面。相反,如果用户名已经注册 或者密码和确认密码都不匹配,然后它会呈现相应的错误文件“userexist.html.erb”或 “passerror.html.erb”。

问题:

我可以在success.html.erb文件中访问@name实例变量。但我无法在两个错误中访问它 html文件。为什么它只能在“成功”而不是“userexist”和“passerror”中访问。为什么它无法访问。而我需要的是什么 在两个错误处理html页面中访问这些变量?

1 个答案:

答案 0 :(得分:1)

您可以显式传递您想要访问的任何内容作为locals哈希参数来调用render

render "userexist", locals: { name: @name }

现在name将传递给基础模板。