Rails 3上跑的很欢的代码放到Rails 4上工作异常,初步推测是Turbolinks导致
是一个用ajax发评论的功能
view 代码
.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"
controller代码
def create @mission = Mission.find(params[:mission_id]) @comment = @mission.comments.build(comment_params) @comment.user = current_user @comment.save 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 %>
有两个问题,第一个是如果controller那样写什么效果也没有,最后面加上render layout: false
就可以了
第二个问题,直接打开这个页面发评论没有问题,但如果从其它页面通过link转过来点一次发布会同步发多次
我猜是turbolinks的问题,但没办法解决掉,不知道有没人遇到过,还是我代码里有低级错误?望大神帮忙
原文地址:Rails 4 Turbolinks 导致 js 工作不正常, 感谢原作者分享。 人生就像一场旅行,不必在乎目的地,