0

我克隆并调整了这个Rails 应用程序,在 ajax 请求时渲染部分内容时遇到了一些麻烦,在日志中我看到有罪的行在registrations_controller.rb(设计)中

class RegistrationsController < Devise::RegistrationsController

  def create
    build_resource

    if resource.save
      if resource.active_for_authentication?
        sign_in(resource_name, resource)
        (render(:partial => 'thankyou', :layout => false) && return)  if request.xhr?
        respond_with resource, :location => after_sign_up_path_for(resource)
      else
        resource.update_attribute(:encrypted_password, nil) # make sure there is no password
        expire_session_data_after_sign_in!
        (render(:partial => 'thankyou', :layout => false) && return)  if request.xhr?
        respond_with resource, :location => after_inactive_sign_up_path_for(resource)
      end
    else
      clean_up_passwords resource
      render :partial => 'email_capture', :action => :new, :layout => !request.xhr?**
    end
  end

  protected

  def after_inactive_sign_up_path_for(resource)
    '/thankyou.html'
  end

  def after_sign_up_path_for(resource)
    redirect_to root_path
  end

end

返回的错误信息是这样的:

ActionView::MissingTemplate - 缺少部分

使用 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}。在以下位置搜索:*“/Users/Davide/Documents/Jobsite/rails-prelaunch-signup-1click/app/views”*“/Users/Davide/.rbenv/versions/1.9.3-p194/lib/ruby/gems/ 1.9.1/gems/devise_invitable-1.1.8/app/views" * "/Users/Davide/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/devise-2.2。 4/应用程序/视图”

有趣的是,如果我删除 :layout => !=request.xhr? 参数部分被找到,但页面刷新并且丢失了所有样式表和其他资产。

知道我应该从哪里开始寻找吗?

谢谢!

4

1 回答 1

0

我还克隆并修改了该项目,并遇到了几乎相同的问题。对我来说,这个问题会在第二次保存错误的电子邮件地址失败后出现——但结果是相同的。

通过使用来自以下问题/答案的上下文和信息: 从 AJAX 请求返回的表单在提交时不被识别为“远程”

我能够做出改变来解决我的问题。在 _email_capture.html.erb 中,添加:remote => true, 到 simple_form_for 行。就我而言,整个修改后的行是:

<%= simple_form_for resource, :as => resource_name, :remote => true, :url => registration_path(resource_name) , :html => {:class => 'form-inline'} do |f| %>

希望这对你也有帮助!

于 2013-08-11T03:33:47.460 回答