- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Devise 和 DeviseInvitable 来管理我的应用程序中的身份验证,但我在向 InvitationsController#update 添加 AJAX 支持时遇到了一些问题。 DeviseInvitable 中的 Controller 如下所示:
# invitations_controller.rb
# PUT /resource/invitation
def update
self.resource = resource_class.accept_invitation!(params[resource_name])
if resource.errors.empty?
set_flash_message :notice, :updated
sign_in(resource_name, resource)
respond_with resource, :location => after_accept_path_for(resource)
else
respond_with_navigational(resource){ render_with_scope :edit }
end
end
这在 resource.errors.empty 时有效吗? == true
然后我们执行:
respond_with resource, :location => after_accept_path_for(resource)
(即呈现 invitations/update.js.erb 并进行我的 javascript 调用)。问题是什么时候resource.errors.empty? == false
,我们执行:
respond_with_navigational(resource){ render_with_scope :edit }
服务器说:
Rendered invitations/update.js.erb (1.4ms)
但我的 javascript 调用没有运行。谁能解释一下 respond_with_navigational
应该做什么?我已经在谷歌上搜索了几个小时,但我没有在任何地方找到这个 api 的解释。
谢谢!
最佳答案
好的,我知道 respond_with_navigational
在做什么。它在 Devise 基类中定义如下:
def respond_with_navigational(*args, &block)
respond_with(*args) do |format|
format.any(*navigational_formats, &block)
end
end
并且,navigational_formats
也在 Devise 中定义:
# Returns real navigational formats which are supported by Rails
def navigational_formats
@navigational_formats ||= Devise.navigational_formats.select{ |format| Mime::EXTENSION_LOOKUP[format.to_s] }
end
因此,它基本上是 respond_with()
的包装器。为了让它工作,我必须将以下内容添加到我的 InvitationsController 中:
respond_to :html, :js
现在,update.js.erb
正在正确呈现。
关于javascript - "respond_with_navigational"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770193/
我正在使用 Devise 和 DeviseInvitable 来管理我的应用程序中的身份验证,但我在向 InvitationsController#update 添加 AJAX 支持时遇到了一些问题。
我是一名优秀的程序员,十分优秀!