레일즈 3에서는 작동하지 않지만 레일즈 4에서는 작동하지 않는 코드를 사용합니다. 터보 링크에 기인 한 것 같지만 그다지 잘 모르겠습니다.레일 4 터보 링크는 여러 번 폼을 제출합니다.
보기 :
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 :
내 문제를 해결, 여기에 코드입니다3210<% 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 레일즈 3
두 번째 질문 :이 페이지를 다시 방문하면 주석 기능이 작동하지만 다른 페이지의 링크를 클릭하여이 페이지로 이동하면이 양식이 아약스 요청 호출을 여러 번 발생시킵니다. 여러 번 의견이 생성됩니다.
감사의 말씀 덕분에
- 연결없이 작동하는지 확인하십시오. [터보 링크를 제거하는 방법] (http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4) –
application.js 파일에서 터보 링크를 제거하면 작동합니다. –