呈现js.动词in rails

Rendering js.erb in rails

本文关键字:rails in 动词 js 呈现      更新时间:2023-09-26

我想试试我的js。它是否有效?

here my view posts/index to trigger

 <%= link_to "Like", {:controller => 'post', :id => post , :action =>'like'}, class: "btn btn-danger btn-xs", remote: true %>

my post controller

def like
@user = current_user
@post.liked_by(@user)
redirect_to posts_path
respond_to do |format|
  format.html {redirect_to posts_path}
  format.js { render :action => 'stablelike' }
end
end

这是我的js。动词to test

alert("working");

,这是我的错误:当我检查我的Chrome

AbstractController::DoubleRenderError at/post/like/85

Render和/或redirect在此操作中被调用多次。请注意,您只能调用渲染或重定向,并且每个操作最多调用一次。还要注意,重定向和呈现都不会终止操作的执行,所以如果您希望在重定向后退出操作,则需要执行类似"redirect_to(…)and return"的操作。

app/controllers/posts_controller。Rb,第83行

 ``` ruby
 78       @user = current_user
 79       @post.liked_by(@user)
 80       redirect_to posts_path
 81       respond_to do |format|
 82         format.html {redirect_to posts_path}

83 format.js {render:action => 'stablelike'}84年
85年结束86年结束87

在控制器动作中,renderredirect_to都不会停止动作的执行。这就是为什么你要做DoubleRenderError。取出第一个redirect_to,一切都应该没问题。

def like
  @user = current_user
  @post.liked_by(@user) # I am unsure what you're trying to accomplish here
  respond_to do |format|
    format.html { redirect_to posts_path }
    format.js { render :stablelike }
  end
end

如果这不起作用,可能您没有设置stablelike动作来响应xhr请求。你可以通过

def stablelike
  respond_to  do |format|
    # other formats
    format.js # by default looks for `stablelike.js.erb`
  end
end