Saya telah membuat formulir ajax di modal bootstrap yang membuat posting baru ke dalam database saya. Bentuknya adalah:
<%= form_for @post, remote:true, :html => {:id => "share-needs-form"} do |f| %>
<div class="modal-body">
<div id="shareNeedsModalFirstStep">
<div class="row" style="margin-bottom: 10px">
<ul class="error-alert hidden share-needs-form-errors col-lg-10 col-centered" id="share-needs-error-alerts"></ul>
</div>
<div class="row"style="margin-bottom: 10px;">
<div class="col-lg-10 col-centered">
<%= f.text_field(:title, :class => "form-control", :placeholder => "Add a title for e.g I need a designer, in return I can code for you", :id => "title") %>
</div>
</div>
<div class="row" style="margin-bottom: 10px;">
<div class="col-lg-10 col-centered">
<%= f.text_area(:description, :rows => "5", :class => "form-control", :id => "description", :placeholder => "Write some description about your idea, so that people who can offer an exchange know what you want to accomplish") %>
</div>
</div>
<div class="row">
<div class="col-lg-10 col-centered">
<%= f.text_field(:keywords, :class => "form-control", :id => "keywords", :placeholder => "Add some keywords (not more than 5 and comma(,) separated)") %>
</div>
</div>
</div>
<div class="row hidden" id="shareNeedsModalSecondStep" >
<div class="well" style="max-height: 250px; overflow-y: scroll;">
<div>
<a href="/id#" style="font-size: 17px;">I need a designer, in return I can code for you</a>
<p>I need a designer for a game project, I am working on a small 2D game, I can provide my coding skills for you. I am good at making web applications, and...</p>
</div>
<hr />
<a href="/id#" style="font-size: 17px;">I need a designer, in return I can code for you</a>
<p>I need a designer for a game project, I am working on a small 2D game, I can provide my coding skills for you. I am good at making web applications, and...</p>
<hr />
<a href="/id#" style="font-size: 17px;">I need a designer, in return I can code for you</a>
<p>I need a designer for a game project, I am working on a small 2D game, I can provide my coding skills for you. I am good at making web applications, and...</p>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-warning hidden" id="shareNeedsModalBackButton">Back</button>
<button type="button" class="btn btn-warning" id="shareNeedsModalContinueButton">Continue</button>
<%= submit_tag "Share", :class => "btn hidden btn-warning", :id => "shareNeedsModalFormSubmitButton" %>
</div>
<% end %>
Dan inilah pengontrol yang sesuai:
def create
@post = Post.new(post_params)
if @post.save
redirect_to post_path(@post.id)
else
@errors = @post.errors.full_messages
render :json => @errors.to_json
end
end
Seperti yang Anda lihat, metode buat membuat postingan baru berdasarkan kolom formulir yang diterima dari post_params
. Blok else berfungsi dengan baik yang berarti kesalahan dikembalikan dan ditampilkan dalam tampilan saya menggunakan javascript berikut:
$("#share-needs-form").bind("ajax:complete", function(evt, data, status, xhr) {
console.log(data.responseText);
if(typeof data == "object") { //errors were returned as a json "object"
$("#shareNeedsModalBackButton").click();
var form_errors_holder = $("#share-needs-error-alerts");
form_errors_holder.removeClass("hidden");
form_errors_holder.html("");
var errors = data;
for(var i = 0; i < errors.length; i++) {
form_errors_holder.append("<li>" + errors[i] + "</li>");
}
}
});
Namun di pengontrol ketika postingan berhasil disimpan, postingan tersebut tidak dialihkan ke post_path
saya, melainkan mengembalikan seluruh html halaman post_path
saya. Mengapa pengalihan tidak berfungsi dan bagaimana cara memperbaikinya? Tolong bantu.