【问题标题】:Form is not showing after using Ajax call使用 Ajax 调用后未显示表单
【发布时间】:2015-04-17 05:01:30
【问题描述】:

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

views/users/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>

users/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。

【问题讨论】:

  • 您在浏览器控制台中看到了什么?您可以发布它,也可以发布您的日志吗?
  • Mandeep,我越来越像这样加载资源失败:服务器响应状态为 500(内部服务器错误)
  • 啊,需要完整信息,所以当您单击该链接以及您在浏览器控制台中看到的内容时,您可以编辑您的问题并发布完整日志吗?
  • 这很奇怪。当您通过浏览器发送 HTML 请求时,表单会呈现吗?

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


【解决方案1】:

更新代码:

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

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 2015-06-09
    • 1970-01-01
    • 2015-08-28
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多