Jquery 在Rails中,呈现Json如何有条件地重定向
在我的应用程序中,我有一个会议和一个联系人模型。 我已经使用selectize设置了一个jquery函数,它允许我在会议/新表单中直接创建一个新联系人。 为此,我在ajax中使用POST请求,在contacts_controller.rb中使用render 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
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;}});});