新手问题 rails link_to 问题

jaynlive · 2016年01月24日 · 最后由 embbnux 回复于 2016年01月28日 · 2031 次阅读

使用 link_to 创建链接,如<%= link_to "链接名" check_user_path(参数) %>,我的理解是,rails 解析成/users/check?参数 去请求,然后到 users_control.rb 下寻找 check 的方法,最后返回给客户端/view/users/check.html.erb 这个视图,不知道我的理解有没有错。

然而经常使用的时候遇到上图这个问题是什么回事呢?是不是路由配置的问题呢? 路由配置如下:

不是这样的,比如 category has many books , 那么可以使用 category_book_path

你这种情况是不会生成 check_user_path 这种路由的. 如果只是为了避免这个错误,你可以 get /users/:id/check , to: 'users#check', as: :check_user.

#1 楼 @chenjau 嗯嗯,理解了。那如果是要访问 view/uesrs/下某个视图,一般用什么方法呢?在控制器下 render 么

如果是遵守约定的话,动作同名的 view 自然会被渲染,不用手动 render. edit: 如果你要在一个动作里面渲染各种 view, 我感觉好像有点 bad code smell. 还是检查下设计比较好。

#3 楼 @chenjau 嗯嗯,好的。又理解了一点。

这种路由声明 可以用 member

直接 get '/haha' => 'ww#ee'不会生成 route 方法 要这样:

resources :users do
  member do
    post 'check'
  end
end

才会有 check_user_path(params)

#7 楼 @embbnux 好的,谢谢大家的解答,又学习了哈

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