0

我发现这个链接Link to another page using Twitter Bootstrap jquery modal in rails这完全是我需要的——注册和其他使用 Bootstrap modal 和 Devise 的页面。

我做了这些步骤,但它没有弹出,而是将我重定向到另一个页面并显示不正确的页面。

它的行为真的很奇怪,它打开了 NOT MINE 表单。

_new.html.erb

<div class="modal hide fade in" id="sign_up">

<%= form_for resource, :as => resource_name, :url => registration_path(resource_name),do |f| %>
  <%= devise_error_messages! %>
....
 <% end %>     

创建 new.js.erb:

      $("#main").before("<%= escape_javascript(render "new", :formats => [:html]) %>");
      $("#sign_up").modal();

和 link_to :

       <%= link_to "Sign up", new_user_registration_path, :remote => true %>

在 application.html.erb 中:

    <%= stylesheet_link_tag    "application", media: "all" %>
   <%= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' %>
    <%= csrf_meta_tags %>

已编辑。 在我的日志中: 由 Devise::RegistrationsController#new 处理为 JS 渲染 devise/registrations/new.js.erb (15.6ms) Completed 500 Internal Server Error in 31ms

      ActionView::Template::Error (Missing partial devise/new with {:locale=>[:en], :f
       ormats=>[:js, :html], :handlers=>[:erb, :builder, :coffee, :rabl]}. Searched in:

     * "D:/print_it_green/app/views"
    * "C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-2.1.0/app/views"
       ):
        1: $("#sign_up").before("<%= escape_javascript(render "devise/new", :formats
       => [:html]) %>");
         2: $("#sign_up").modal();
      app/views/devise/registrations/new.js.erb:1:in `_app_views_devise_registration
       s_new_js_erb___312569811_25856784'

问题出在哪里?

4

2 回答 2

3

new.js.erb 中,您尝试在名为#main.

向您调用它的页面添加一个空<div>标签,它应该可以工作。id=main

于 2012-10-30T07:31:09.310 回答
1

你的文件在哪个文件夹?如果您打算使用设计,那么您可以使用rails generate devise:views自定义视图。然后将您的new部分和newjs 文件放入该文件夹中。

如果需要,您也可以配置控制器,但如果您创建视图,则 Devise 应自动指向上述命令创建的 Devise 文件夹。

在您的 jQuery 中,您将放置render "devise/registrations/new"而不只是"new".

于 2012-06-13T14:41:09.553 回答