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