我使用一些代碼在Rails 3上很好地工作,但不在Rails 4上,我想這是由Turbolinks引起的,但我對它不瞭解,不能深入挖掘解決我的問題,這裏是代碼:Rails 4 Turbolinks使表單提交多次
觀點:
a/v/m/_new_comment.slim
.new-comment
- if current_user
= render "editor_toolbar"
= form_for(Comment.new, :remote => true, :url => mission_comments_path(@mission)) do |f|
= f.text_area :content, :class => "span10",
:rows => "4", :tabindex => "1"
#preview.hidden
= "Loading..."
= f.submit t("missions.submit_comment"),
"data-disable-with" => t("missions.submitting"),
:class => "btn btn-primary", :tabindex => "2"
- else
= render "need_login_to_comment"
控制器:
def create
@mission = Mission.find(params[:mission_id])
@comment = @mission.comments.build(comment_params)
@comment.user = current_user
if @comment.save
@mission.events.create(user: current_user, action: "comment")
render layout: false
end
和JS:
<% if @comment.errors.any? %>
$(".new-comment textarea").focus();
<% else %>
$(".comments").append("<%= j (render @comment, :index => @mission.comments.count-1) %>");
$(".new-comment #preview").addClass("hidden").html('');
$(".new-comment textarea").css("display", "block").val('');
$(".editor-toolbar .preview").removeClass("active");
$(".editor-toolbar .edit").addClass("active");
<% end %>
我有兩個問題,關於這個問題,首先:像這樣的控制器代碼是不行的 的js代碼是轉移到客戶端,但不跑,我必須在該訴訟的底部添加render layout: false
,沒必要這樣on rails 3
第二個問題:當我第一次訪問這個頁面時,重新加載頁面,評論函數的作品,但是如果我點擊了其他頁面的鏈接跳轉到這個頁面,我提交這個表單會導致ajax請求調用multiple次,將會創建多個評論
謝謝你的支持
我不能在你的特定代碼發表評論,但你可以嘗試刪除渦輪鏈接並查看它是否可用。 [刪除turbolinks的說明](http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4) –
只是從application.js文件中刪除turbolinks使其工作 –