【问题标题】:Rails routes url take out user_idRails 路由 url 取出 user_id
【发布时间】:2017-04-01 21:29:15
【问题描述】:

我目前有标准

get 'profile/:id/view', to: 'profile#view', as: 'view'

产生http://localhost:3000/profile/233/view

控制器是

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

我怎样才能创建一个 URL 为 http://localhost:3000/profile/view 的路径 - 忽略 URL?

我正在尝试做类似的事情

def view(user_id)
        @user = User.find(user_id)
end

但我不确定如何在路由中编写它,或者 link_to 路径会是什么样子?

我一直在寻找一个直截了当的答案,但一直找不到。

提前致谢!

【问题讨论】:

  • 我无法理解这一点:“我怎样才能创建一个 url 为 /profile/view 的路径 - 忽略 URL?”
  • @Saibot 我很懒——我更新了问题

标签: ruby-on-rails devise routes


【解决方案1】:

你可以改变路线到

get 'profile/view', to: 'profile#view'

然后在控制器中,你可以使用设计提供的current_user方法。

def view
  @user = current_user
end

【讨论】:

  • 谢谢@Rockwell Rice - 如果不是 current_user 怎么办?如果一个用户点击另一个用户转到他们的个人资料怎么办?
  • @gwalshington 你必须以某种方式提供user_id。如果操作是GET,则别无选择,如果由于某种原因您可以将其转换为POST 调用,那么您可以将数据作为参数发送,这些参数不会显示在 URL 中。
  • '你必须以某种方式提供 user_id' 除了 URL 之外,我不能以任何方式传递 id?
  • 就像@aks 所说,您可以使用POST,其中数据在URL 中“安静地”传递。但是 --- 它没有数据库中的数字 id,它也可以是参数化的 slug。如果您对此感兴趣,请查看 FriendlyFind -- github.com/norman/friendly_id -- 这样您就可以,正如@rockwell-rice 所说,您可以查看 params[:user_id] 或 current_user
猜你喜欢
  • 2014-04-15
  • 1970-01-01
  • 2016-11-04
  • 2011-06-21
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多