如何让Desive在rails 3中呈现javascript?
我正试图让Desive在出现错误时使用特定的错误模板。它正在进入正确的页面,但它试图将javascript呈现为布局本身 以下是my application.rb layout_by_资源代码:如何让Desive在rails 3中呈现javascript?,javascript,ruby-on-rails,ruby-on-rails-3,layout,devise,Javascript,Ruby On Rails,Ruby On Rails 3,Layout,Devise,我正试图让Desive在出现错误时使用特定的错误模板。它正在进入正确的页面,但它试图将javascript呈现为布局本身 以下是my application.rb layout_by_资源代码: def layout_by_resource if devise_controller? && !current_user.nil? && !current_user.role.nil? && (current_user.role == "supera
def layout_by_resource
if devise_controller? && !current_user.nil? && !current_user.role.nil? && (current_user.role == "superadmin" || current_user.role == "admin")
"admin"
elsif devise_controller? && !current_user.nil? && !current_user.role.nil? && current_user.role == "user"
"user"
elsif devise_controller? && current_user.nil?
respond_to do |format|
format.js { render :action => "layouts/errors", :layout => false, :locals => { :current_object => resource } }
format.html { "application" }
end
else
"application"
end
end
这是我的设计表格代码:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :remote => true) do |f| %>
<% end %>
resource_name,:url=>registration_path(resource_name),:remote=>true)do | f |%>
将上述代码段替换为:
respond_to do |format|
# Show a neat html page inside the app's layout for web users
format.html { render :template => "errors/#{status}", :status => status }
# Everything else (JSON, XML, YAML, Whatnot) gets a blank page with status
# which can then be understood and processed by the API client,
# JavaScript library (on Ajax) etc.
format.all { render :nothing => true, :status => status }
end
如果要为其创建单独的模板,可以这样做,并将其保存在/errors/***.html
中,然后进行渲染
或者,您可以使用javascript在客户端处理错误。因此,我想,迟做总比不做好(但希望这能帮助通过谷歌发现此页面的任何人) 为了让Desive正确呈现javascript,我必须做的是告诉它不要呈现任何类型的布局,ala:
render "fail.js", :layout => false
这就成功了,现在我的JS按预期启动。谢谢,但这些选项都没有帮助,因为当Deave注册表出现错误时,我需要呈现errors.JS.erb文件。
render "fail.js", :layout => false