Rails 4远程true和响应js

时间:2016-04-14 20:52:16

标签: javascript jquery ruby-on-rails ajax post

我可以在表单中以 = 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'); }); }) 提交表单,并由ajax成功发送。但是我希望用JS显示响应(成功或错误),但我不能。

这是我的表格+ JS:

render false

在我的控制器中,我有juste添加{{1}}。

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

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分: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