在 rails 中呈现 js.erb
Rendering js.erb in rails
我想试试我的 js.erb 是否有效?
这里是我的观点posts/index触发
<%= link_to "Like", {:controller => 'post', :id => post , :action =>'like'}, class: "btn btn-danger btn-xs", remote: true %>
我的post控制器
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.erb
alert("working");
这是我的错误:当我检查我的 Chrome
AbstractController::DoubleRenderError 在 /post/like/85
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "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 end
86 end
87
在控制器动作中,render
和 redirect_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
我想试试我的 js.erb 是否有效?
这里是我的观点posts/index触发
<%= link_to "Like", {:controller => 'post', :id => post , :action =>'like'}, class: "btn btn-danger btn-xs", remote: true %>
我的post控制器
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.erb
alert("working");
这是我的错误:当我检查我的 Chrome
AbstractController::DoubleRenderError 在 /post/like/85
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "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 end 86 end 87
在控制器动作中,render
和 redirect_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