使用Ajax调用后,表单未显示

时间:2015-04-17 05:01:31

标签: ruby-on-rails ruby ajax ruby-on-rails-3.2

我想使用Ajax调用显示表单,但它不起作用。 请检查下面的代码。

的观点/用户/ index.html.erb

<h1>Enter your data<h1>
    <%= link_to 'New Task', users_new_path, remote: true %>
    <div id="task-form" style="display:none;"></div>

的用户/ new.html.erb

<%= render 'form' %>

的用户/ new.js.erb

$('#task-form').html("<%= j (render 'form') %>");
$('#task-form').slideDown(350);

的用户/ _form.html.erb

<%= simple_form_for :user, remote: true do |f|   %>
  <%= f.input  :name %>
  <%= f.input  :content %>
  <%= f.button :submit  %>
<% end %>

控制器/ users_controller.rb

  class UsersController < ApplicationController
   def index
     @user=User.all
     respond_to do |format|
    format.html
    format.js
    end
   end
    def new
        @user=User.new
        respond_to do |format|
            format.html
            format.js
        end
    end
    def create

    end
end

的routes.rb

Ajax3::Application.routes.draw do
  root :to => "users#index"
  get "users/new" => "users#new"
  post "users/create" => "users#create"
end

点击链接后,在我的浏览器控制台中,我收到以下错误。

错误:

    GET http://localhost:3000/users/new 500 (Internal Server Error)
    jQuery.ajaxTransport.send   @   jquery.js?body=1:9632
jQuery.extend.ajax  @   jquery.js?body=1:9177
$.rails.rails.ajax  @   jquery_ujs.js?body=1:84
$.rails.rails.handleRemote  @   jquery_ujs.js?body=1:164
(anonymous function)    @   jquery_ujs.js?body=1:342
jQuery.event.dispatch   @   jquery.js?body=1:4642
jQuery.event.add.elemData.handle    @   jquery.js?body=1:4310

我正在使用rails版本3.2.19。

1 个答案:

答案 0 :(得分:0)

更新代码:

  

1)路径错误“users_new_path”到“new_users_path”

视图/用户/ index.html.erb

<h1>Enter your data<h1>
    <%= link_to 'New Task', new_users_path, remote: true %>
    <div id="task-form" style="display:none;"></div>
2) Update users/new.js.erb
$('#task-form').html("<%= escape_javascript(render("form"))  %>");
$('#task-form').slideDown(350);
  

3)更新:controller / users_controller.rb

class UsersController < ApplicationController
    def new
        @user=User.new
        respond_to do |format|
            format.html
            format.json
        end
    end
    def create

    end
end