首先,我为你准备了一些普通的红宝石:
-
当你打电话的时候
FormStack::Form.new().create_form
你其实不需要
()
之后
.new
--Ruby知道调用不带参数的方法,即使排除parens。
-
我不太确定你怎么打电话
FormsController::display_form
从
FormsController::create
但是现在我假设你在使用魔法。
不管怎样,我的回答是。当您的错误消息声明时,该错误与您调用
submission
在一些没有
提交
方法。有了这些知识,我们可以看到您在这行中调用提交的对象:
@form.submission
你好像在打电话
提交
在
@form
. 好吧,我们去看看你申报的地方
@表格
:
@form = FormStack::Form.new().create_form
让我们把那个声明分解成几个部分。首先,用
FormStack::Form.new()
,您正在创建的新实例
FormStack::Form
. 到现在为止,一直都还不错。
窗体堆栈::窗体
有一个
提交
方法。但是你打电话来
create_form
在上面。那么,让我们看看
创建表格
做:
def create_form
self.class.get(relative_uri, headers: headers)
end
创建表格
调用httparty提供的方法,
get
. 这个
得到
方法返回
HTTParty::Response
对象。那么,让我们分析一下您设置的行
@表格
再一次。分解,你要做的是:
@form = FormStack::Form # This line sets the variable to a constant
@form = @form.new # This line sets the variable to be an instance of FormStack::Form
@form = @form.create_form # This line sets @form to be an instance of HTTParty::Reponse
正如你所看到的,在我们设置的最后
@表格
到的一个实例
HTTParty::Reponse
而不是
窗体堆栈::窗体
因为没有
提交
方法
httparty::响应
这就是你得到错误的原因。
基于这种探索,我们可以看到解决方法是
@表格
到A
窗体堆栈::窗体
对象,我们可以通过更改
display_form
拟采取的行动:
def display_form
@form = FormStack::Form.new
@form.create_form
end