我在user.rb模型中有这个功能:
Dim OpenForm1 As New Form2
Dim OpenForm2 As New Form4
If String.IsNullOrEmpty(OpenForm1.tbOrderReceived1.Text) Then
OpenForm1.PassOrderKitchen1 = rbTable1.Text + ":" + cbSpagethi.Text + "-" + tbSpagehti.Text
ElseIf (OpenForm1.tbOrderReceived1.Text > 0) Then
OpenForm2.PassOrderKitchen2 = rbTable1.Text + ":" + cbSpagethi.Text + "-" + tbSpagehti.Text
End If
我想从Views(new.html.erb)上的脚本中调用此函数,如下所示:
def change_key
self.public_key = params[:public_key]
end
我希望self.public_key获取x值
我得到的结果是:
未定义的局部变量或方法`params'对
有什么想法吗?
答案 0 :(得分:0)
你的方法需要一个争论:
def change_key(arg)
self.public_key = arg
end
然而,由于这是一个模型方法,因此不应在视图中直接调用它,因为这不是MVC。但是如果你想在控制器动作中使用它,那可能会有效。您需要定义一个控制器操作,并且可能使用javascript向您的控制器操作发出ajax请求,然后它可以在您的模型上运行。
答案 1 :(得分:0)
要传递参数,您可以
def change_key(params)
self.public_key = params[:public_key]
end
你可以称之为:
@model.change_key(x)
而且,只要@model
有一个属性public_key
,而x
就像hash
一样 - 那就应该有效。
当然,除非您希望保留@model.public_key
。在这种情况下,它会更像是:
def change_key(params)
self.public_key = params[:public_key]
self.save
end
这很愚蠢,因为你可以一次性完成,比如:
def change_key(params)
self.update(public_key: params[:public_key])
end
但是,为什么要简单地声明一个change_key
方法:
@model.update(public_key: params[:public_key])
当然,你肯定不想在view
中做,因为(IMO)你的view
应该从不在视图中更改模型。这样做要求您的view
图层需要您对model
图层的深入了解 - 这会使您的应用程序变得脆弱。