我正在使用设计。在部分视图中,我有:
<%= simple_form_for resource, :as => :user, ...
在我的应用程序助手中:
# @see http://stackoverflow.com/questions/4541075/what-is-the-devise-mapping-variable-and-how-can-i-include-it
def resource_class
devise_mapping.to
end
# @see http://stackoverflow.com/questions/4081744/devise-form-within-a-different-controller
def resource_name
:user
end
def resource
# with some controllers (homepage, static, this method is called)
# with other controllers (Item, it's not called: I don't see the abort call)
abort('should stop here')
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
在某些控制器上,我的表单工作正常。在其他人身上,我收到此错误:
找不到没有 ID 的项目
问题是我定义的方法没有被调用。对于某些控制器,ApplicationHelper.resrouce
调用它,在其他控制器上,它是另一个方法资源(Item.resource ?),我不知道它在哪里定义。
如何在其他地方定义方法资源?为什么我的应用程序助手的方法资源没有在某些页面上调用?
注意:我正在使用定义方法资源的 gem 继承资源。也许这会造成冲突。但是不知道方法是怎么继承的