Ruby on rails 3 终端表示视图已渲染,但实际上未在浏览器中渲染?
以下控制器执行以下操作: 如果当前用户的ID存在于其中一个投票实例的user_ID属性中,则当前用户将被重定向到此页面,并显示一条通知,告知其已投票。如果没有,将进行投票并提供视图/投票/投票_up.js.erb 投票权(u controller.erb): views/posts/show.html.erb: 一切正常,除了用户没有被重定向和通知没有出现。我刚在候机楼收到一张通知: 缓存0.0ms从users.id=2的用户中选择用户。* ORDER BY users.created_at ASC LIMIT 1 Rendered posts/show.html.erb 在布局/应用程序中,386.5ms在428ms视图中完成200 OK: 416.5ms |活动记录:7.3msRuby on rails 3 终端表示视图已渲染,但实际上未在浏览器中渲染?,ruby-on-rails-3,Ruby On Rails 3,以下控制器执行以下操作: 如果当前用户的ID存在于其中一个投票实例的user_ID属性中,则当前用户将被重定向到此页面,并显示一条通知,告知其已投票。如果没有,将进行投票并提供视图/投票/投票_up.js.erb 投票权(u controller.erb): views/posts/show.html.erb: 一切正常,除了用户没有被重定向和通知没有出现。我刚在候机楼收到一张通知: 缓存0.0ms从users.id=2的用户中选择用户。* ORDER BY users.created_at A
有什么建议可以解决这个问题吗?顺便问一下,除非在这里怎么做,否则它更可编辑吗?重定向不起作用,因为您是通过Ajax调用投票方法的。您应该使用javascript显示通知,就像您在用户尚未投票时所做的那样 你可以这样做:
def vote_up
@post = Post.find(params[:id])
if @post.votes.exists?(:user_id => current_user.id)
@notice = 'You already voted'
else
@vote = @post.votes.create(:user_id => current_user.id, :polarity => 1)
end
respond_to do |format|
format.js
end
end
然后在.erb.js文件中,根据@notice和@vote是否为空,发回javascript
<% unless @notice.blank? %>
// javascript to display @notice
<% end %>
<% unless @vote.blank? %>
// javascript to increase vote count
<% end %>
你是说创建另一个js.erb文件?对不起,我是Rails初学者。在控制器中会是什么样子?也许你可以使用相同的.js.erb文件。你能告诉我怎么做吗?
def vote_up
@post = Post.find(params[:id])
if @post.votes.exists?(:user_id => current_user.id)
@notice = 'You already voted'
else
@vote = @post.votes.create(:user_id => current_user.id, :polarity => 1)
end
respond_to do |format|
format.js
end
end
<% unless @notice.blank? %>
// javascript to display @notice
<% end %>
<% unless @vote.blank? %>
// javascript to increase vote count
<% end %>