Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在Rails中,呈现Json如何有条件地重定向_Jquery_Ruby On Rails_Json_Redirect_Rendering - Fatal编程技术网

Jquery 在Rails中,呈现Json如何有条件地重定向

Jquery 在Rails中,呈现Json如何有条件地重定向,jquery,ruby-on-rails,json,redirect,rendering,Jquery,Ruby On Rails,Json,Redirect,Rendering,在我的应用程序中,我有一个会议和一个联系人模型。 我已经使用selectize设置了一个jquery函数,它允许我在会议/新表单中直接创建一个新联系人。 为此,我在ajax中使用POST请求,在contacts_controller.rb中使用render json作为我的创建方法: def create @contact = Contact.new(contact_params) @user = current_user @contact.user = @user if @c

在我的应用程序中,我有一个会议和一个联系人模型。 我已经使用selectize设置了一个jquery函数,它允许我在会议/新表单中直接创建一个新联系人。 为此,我在ajax中使用POST请求,在contacts_controller.rb中使用render json作为我的创建方法:

def create
  @contact = Contact.new(contact_params)
  @user = current_user
  @contact.user = @user

  if @contact.save!
    render json: @contact, except: :avatar
  else
  render json: { errors: @contact.errors.full_message }
  end
end
这种行为在我的meeting/create方法中是完美的,因为它允许我使用模式创建一个新联系人,并在我的表单中获取函数的回调以显示新的联系人名称。 以下是我的会议/新视图:

*view : meeting/new*

<%= simple_form_for(@meeting) do |f| %>
  <%= f.input :name %>
  <%= f.input :description %>
  <%= f.input :start_date %>
  <%= f.input :end_date %>
  <%= f.association :contact, collection: Contact.all.pluck(:fullname, :id), input_html: { class: "select-contact" } %>

  <%= f.submit 'Enregistrer un nouvel rendez-vous', class:'btn btn-secondary' %>
<% end %>

<div class="modal fade contact-modal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
  <div class="modal-dialog modal-sm" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
        <h4 class="modal-title" id="mySmallModalLabel">Ajouter un contact</h4>
      </div>
      <div class="modal-body">
        <%= simple_form_for Contact.new, remote: true do |f| %>
          <%= f.input :first_name %>
          <%= f.input :last_name %>
          <%= f.input :fullname %>

          <%= f.submit 'Ajouter un nouveau contact', class:'btn btn-primary' %>
        <% end %>
      </div>
    </div>
  </div>
</div>
*视图:会议/新建*
×
外部接触
我的问题是,我还想通过我的联系人/新视图创建一个新联系人。但是在创建这个联系人之后,我会重定向到我的索引视图

*view : contact/new*

<%= simple_form_for [ @user, @contact ] do |f| %>
  <%= f.input :avatar, as: :file %>
  <%= f.input :first_name %>
  <%= f.input :last_name %>
  <%= f.input :fullname %>
  <%= f.input :email %>
  <%= f.input :phone_number %>
  <%= f.input :tag_list %>
  <%= f.input :birthdate, as: :string, type: :text, input_html: {class: "datepicker", id: "birthdate"} %>
<%# raise %>
  <%= f.submit %>
<% end %>
*视图:联系人/新建*
由于联系人控制器中的create方法,在保存联系人时会触发renderjson,但没有重定向

当我通过会议/新视图创建一个新联系人时,我将呈现json而不重定向。当我在contact/new视图中创建新联系人时,我会在创建联系人后重定向到contacts/index视图。 在这两种情况下,我都需要发布一个ajax请求来存储一些数据

有人知道我怎么做吗


非常感谢

好的。rails
remote:true
表单功能不允许侦听HTTP状态代码。 您必须使用JavaScript来实现这一点

你的问题与此类似


如果您需要帮助编写JavaScript,请告诉我。

你好,朋友,谢谢您的回复。我试了你的建议。但事实上,我认为我的情况有点复杂。在bot情况下:通过联系人表单和联系人视图创建联系人,通过会议表单和视图创建联系人,我需要发送一个ajax请求。但在第一种情况下(通过联系人表单和联系人视图创建联系人),我会重定向到我的联系人(联系人控制器中的索引方法),而在第二种情况下(通过会议表单和视图创建联系人),我会重定向到我的会议(会议控制器中的索引方法)。这是我的JS:$(“#新联系人”)。在(“提交”,函数(e){e.preventDefault();$.ajax({method:'POST],url:$(this.attr(“操作”),data:$(this.serialize(),数据类型:'script',success:function(response){window.location='/meetings';console.log(response);selectizeCallback({value:response.id,text:response.fullname});$(“.contact-model”).model('toggle');//selectizeCallback=null;}});});