新手问题 Rails 对 MVC 控制器作用的困惑

dorbod · 2015年12月22日 · 最后由 dorbod 回复于 2015年12月24日 · 1979 次阅读

新建一个 rails 项目,添加 Users 模型,然后添加 Settings 控制器,Settings 控制器里面有 basic_profile,account_setting 等动作来修改用户的各种信息。 现在的问题是 Settings 控制器如何获取 Users 模型中当前登陆用户的数据资料? 下图是 github 修改用户资料的页面: 但是像下图 segmentfault 的修改资料的页面就简单多了,所有资料在 segmentfault.com/user/settings 页面里面修改,不知道他这个又是怎么做的: 我在我的 rails 程序里面只会在 users/[id]/edit 下面修改当前用户的资料,但是我想要实现像 github 那样的,但是对 MVC 不是很理解,不知道该怎么办。

一般来说,User 模型对应着 UsersController 控制器,最好不要自己改太多,因为 Rails 是一个强约定框架,不按约定来会很麻烦(信 DHH,得永生哈)。

如果你用Devise做验证的话,直接就有current_user这个 helper 访问当前登录的用户。

#1 楼 @dongli1985 谢谢你回答,可是我要像 github 那样在 github.com/settings/下面的不同网页里修改不同类别的用户信息怎么办?而且 github 也是 rails 写的。

楼主,感觉你什么都不会就开始写代码了 建议你把 rails tutorial 看一遍,这都是些很基础的问题

#3 楼 @kikyous 我看了,但是对域名和动作的对应还是很困惑

#4 楼 @dorbod bundle exec rake routes

#5 楼 @kikyous

more_info GET    /more_info(.:format)      user#edit
    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
     user GET    /users/:id(.:format)      users#show
          PATCH  /users/:id(.:format)      users#update
          PUT    /users/:id(.:format)      users#update
          DELETE /users/:id(.:format)      users#destroy

more_info 是我自己定义的 route,想在此页面修改用户资料,但是无法用 link_to 链接过去,不知道哪里有问题?

#6 楼 @rei 谢谢你,朋友,我 fork 了看看

9 楼 已删除

#2 楼 @dorbod 在什么地方修改什么完全取决于你设置的 routes(相应的控制器的方法)和编写的 html.erb 了(一般说来)。

#10 楼 @dongli1985 你的解答总能点到点子上!对了,你是大气所的老师吗?我是国科大的学生~

#11 楼 @dorbod 嗯。Welcome to Rails world~

既然用了 rails 就要严格遵循它的规则,要不然很难体现出它在这方面的优势,你会走很少弯路的,更会避免一大堆不必要的麻烦

#13 楼 @easonlovewan 好的 我会慢慢体会的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号