Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 终端表示视图已渲染,但实际上未在浏览器中渲染?_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 终端表示视图已渲染,但实际上未在浏览器中渲染?

Ruby 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

以下控制器执行以下操作:

如果当前用户的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.3ms


有什么建议可以解决这个问题吗?顺便问一下,除非在这里怎么做,否则它更可编辑吗?

重定向不起作用,因为您是通过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 %>