【问题标题】:I'm having trouble viewing other users in my app我无法在我的应用中查看其他用户
【发布时间】:2014-08-19 07:03:00
【问题描述】:

在我的应用程序的用户控制器中,我有一种查看用户生成的帖子的方法,但是当您转到索引页面并单击另一个用户时,会显示当前登录用户的页面,但 url 是对于我刚刚点击的用户。

这是我的用户控制器中的方法

def feed
  @title = "Feed"
  @user = User.find(session[:user_id]) # This is the problem
  feed = Feed.new(@user)

render 'show_feed'
end

我也无法理解 session[:user_id] 和 params[:id] 之间的区别。如果我在页面上将 session[:user_id] 更改为 params[:id],我刚刚点击的用户,他们的帖子就会显示出来,但是当我返回登录用户的页面时,我收到错误“Couldn '在“app/controllers/users_controller.rb:59:in 'feed'”中找不到具有 'id'=user_id' 的用户 所以我的问题是,我需要将什么传递给 @user = User.find() 才能获得正确生成的页面/s?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    通常,如果您单击链接以查看其他用户,则该链接中嵌入了一个“id”,该“id”在参数中传递,因此您可以这样做...

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

    您返回已登录用户的链接不正确,但您没有显示该链接。它应该很可能是这样的

    <%= link_to user_path(session[:user_id]) %>
    

    根据您可能正在做的问题的描述......

    <%= link_to user_path('user_id') %>
    

    ...这没有意义...这意味着从字面上转到ID为“user_id”的用户记录

    【讨论】:

    • 我认为这是一个新问题。你应该这样发布。
    【解决方案2】:

    session 是从一个请求到另一个请求的持久数据(通常存储在 cookie 中),并在浏览器会话结束时过期。一个常见的用途是存储登录用户的 id。

    通过将其传递给User.find,您完全忽略了 URL 中的用户 ID。您应该使用params[:id](除非您的路线以不同的方式命名您的网址部分)

    我不清楚您“返回”时的问题(我什至无法判断我们是否在谈论相同的控制器操作),但猜测该页面在 URL 中没有 id ,或者路由将其称为其他名称,或者(这有点混乱)您打算在 URL 中没有 id 时回退到当前用户,在这种情况下您需要使用 params[:id] 或 @ 987654327@ 取决于那里有什么。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2014-03-15
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多