Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails将变量从控制器传递到模型不工作_Ruby On Rails_Ruby On Rails 3_Activerecord_Model_Var - Fatal编程技术网

Ruby on rails rails将变量从控制器传递到模型不工作

Ruby on rails rails将变量从控制器传递到模型不工作,ruby-on-rails,ruby-on-rails-3,activerecord,model,var,Ruby On Rails,Ruby On Rails 3,Activerecord,Model,Var,我试图将一个变量从控制器传递到我的表单,但没有用 它在另一个控制器中工作,但无法使其用于新用户注册 def update @profile = Profile.find(params[:id]) @profile.form = "signup" ... end 在模型内部,我可以执行@profile.form来获取值 这不适用于新用户注册: 内部创建操作: undefined method `form=' for nil:NilClass 如何在新用户注册时

我试图将一个变量从控制器传递到我的表单,但没有用

它在另一个控制器中工作,但无法使其用于新用户注册

  def update
    @profile = Profile.find(params[:id])
    @profile.form = "signup"
    ...
  end
在模型内部,我可以执行
@profile.form
来获取值

这不适用于新用户注册: 内部创建操作:

 undefined method `form=' for nil:NilClass
如何在新用户注册时将变量传递给我的模型
User=User.new
然后
@User.form==“signup”
也不起作用,我的属性可访问列表中有:form

模型的一部分:

  attr_accessible form
  ...
  validates :city_id, :presence => true, :if => :signup?


  def signup?
    #@profile.form == "signup"
    #@user.form == "signup"
    if self.form == "signup"
      return true
    else
      return false
    end
  end
编辑1: 仍然无法将参数传递给模型:S:S:S尝试了所有可能的方法,google找到了解决方案

我的注册的创建方法#创建=


有趣。我相信你要做的是让一个对象的虚拟属性“形式”具有一定的值。也就是说,表单是否也存在于数据库中。如果没有,您应该使用
attr\u accessor:form

这在调用表单的类中定义了表单的getter和setter方法

然而,你所说的错误是完全不同的

nil:NilClass的未定义方法'form='


这仅仅意味着在参数中传递id的配置文件不存在。i、 e.如果我们正在更新params id=222,则配置文件中不存在id为222的数据库记录。

我不确定您的问题到底是什么。 在我两次阅读您的问题陈述之后,我了解到您试图“新建”一个概要文件实例,分配其表单属性。并使用其实例方法
signup?
进行验证。但是在
self.form
上出现错误,因为
self
引用了
nil类

我认为您应该在create方法中将
profile
更改为
@profile
。 只是在阅读后猜测, 我的想法是,声明将在控制器结构中动态添加的实例变量,然后将它们传递给模型。而且它总是
@…
rails g scaffold
生成的控制器内部


试试看:)

你也应该在这里发布相关的代码models@LukasStejskal用模型的更多信息更新了问题您还可以提供视图的代码吗?@user1022209在profilescontroller中发布了创建方法#更新有效,我在那里设置@profile.form=“signup”但是在用户注册时,只有创建操作可以设置,所以我对此仍然一无所知。请分享您的创建方法。如果我之前不清楚,我很抱歉,但是我想说的是,您尝试执行的变量.form=不是对概要文件对象的引用。这是
nil
:我发布了一个create方法hope,它可以清除bitdef中的内容create{@profile=profile.new;@profile.form==“signup”}然后在模型注册中?如果@profile.form==“signup”返回true,则我会执行此方法,但由于nil:NilClass arghh的未定义方法“form”失败,这确实令人沮丧。请尝试在方法中使用self.form==“signup”
  def create
    profile = Profile.new
    profile.form = "signup"

    super
  end