2016-04-14 68 views
0

我可以在表单中提交我的表单,并且由ajax成功发送。但我想用JS显示响应(成功或错误),但我不能。Rails 4 remote true and response js

这里是我的表单+ JS:

   = simple_form_for @widget, :url=> template_save_widget_manager_template_url(id:widget.id),:format => :js, remote: true do |f| 
       = f.input :title, label: "Titre ?" 
       = f.input :active, label: "Titre ?" 
       = f.input :where, label: "Ou souhaitez-vous afficher ce bloc ?", collection: @where 
       = f.button :submit, class:'btn btn-primary' 
       - content_for :script do 
    javascript: 
     $(document).ready(function(){ 
      $("#new_clan_templates_widgets_build").on("ajax:success", function (e, data, status, xhr){ 
      alert('test'); 
      }); 
     }) 

在我控制我已经中庸之道添加render false

JavaScript代码不起作用,为什么?

+0

你应该把它里面create.js.erb –

+0

是的,我已经试过i'have放“警报(‘测试’);付诸行动.js.erb,但它不工作。与Chrome我有“网络”响应纯文本“警报(”测试“)”:/ – Shinix

回答

0

确定它现在正在工作。这里的解决方案:

我已经加入到我的控制器

class ExampleController < ApplicationController 
    layout proc{|c| c.request.xhr? ? false : "application" } 
    def create 
     respond_to do |format| 
     format.js { render :layout => !request.xhr? } 
     end 
    end 
0
this is my code for creating a post with remote 
<div class="row"> 

<div class="col-md-6"> 
<%= form_for(@blog, html: {role: 'form'}, remote: true) do |f| %> 
    <% if @blog.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@blog.errors.count, "error") %> prohibited this blog from being saved:</h2> 

     <ul> 
     <% @blog.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="form-group"> 
    <%= f.label :title %><br> 
    <%= f.text_field :title, class: "form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.label :content %><br> 
    <%= f.text_area :content, class: "form-control" %> 
    </div> 



     <%= f.hidden_field :user_id, value: current_user.id %> 



    <%= f.submit nil, class: "btn btn-primary" %> 

<% end %> 
</div> 
</div> 

and this is my create action in controller 
def create 
    @blog = Blog.new(blog_params) 

    respond_to do |format| 
     if @blog.save 
     format.html { redirect_to @blog, notice: 'Blog was successfully created.' } 
     format.json { render :show, status: :created, location: @blog } 
     format.js{} 
     else 
     format.html { render :new } 
     format.json { render json: @blog.errors, status: :unprocessable_entity } 
     format.js { } 
     end 
    end 
    end 

this is response file after success 
<% if @blog.new_record? %> 
alert('errors'); 
<% else %> 

    alert('post created successfully'); 
    window.location = '<%= blog_path(@blog) %>' 
<% end %>