繁体   English   中英

Rails 3:当没有current_user(没有用户登录)friendly_id将用户名发送为:id,但控制器方法不起作用

[英]Rails 3: when no current_user(no user logged in) friendly_id sends username as :id but controller method does not work

我使用的是friendly_id gem,当我以登录用户身份进入用户的个人资料页面时,它可以正常工作:

localhost/users/facebookname

当我注销并转到个人资料页面时,它以相同的方式显示网址,没问题。 但是,当我尝试显示用户的“喜欢”帖子时,我遇到了问题。 什么都没发生。

Started GET "/users/facebookname/likes" for 127.0.0.1 at 2015-01-08 14:47:23 +0700
  Processing by UsersController#likes as JS
  Parameters: {"id"=>"facebookname"}
Completed   in 152ms

UsersController#喜欢

  def likes
    @title = "Likes"
    @user = User.find(params[:id])

    respond_to do |format|
      format.html { render "posts/posts", :locals => { :posts => @likes } }
      format.js { respond_with @likes}
    end
  end

UsersModel

has_friendly_id :username, :use_slug => true, :approximate_ascii => true

当我以用户身份登录并尝试相同的操作时, Parameters: {"id"=>"facebookname"}的使用方式相同,但是控制器操作将其与适当的:id一起使用并呈现@likes。 为什么没有登录用户就不会发生这种情况?

非常感谢您的见解

您应该在控制器中按username找到用户:

@user = User.find_by_username!(params[:id])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM