houyuan425 2009-04-19 22:05
浏览 188
已采纳

请教一下路由的问题,不知该怎么配

输入以下地址

http://127.0.0.1:3001/user

controller:usercontroller

model:user

view:index

其中model里有字段name
index里有user的公开信息和不公开信息,但必须登陆后才能都显示

我想在地址栏输入http://127.0.0.1:3001/user.name
就能把user的公开信息显示出来
应该怎么设置路由?
[b]问题补充:[/b]
web框架?
就RAILS自带的MVC吧,user加了REST规则
[b]问题补充:[/b]
例如有个user,user name是aaa

http://127.0.0.1:3001/aaa

就能显示aaa的公开信息主页
[b]问题补充:[/b]
是这样的,我想通过http://127.0.0.1:3001/user.name 中的user.name来判断并获取数据库中对应的数据,夜鸣猪 大大理解的是对的,我是那个意思,但光加一个授权方法还是不能改变路由吧??http://127.0.0.1:3001/user的user是C的名字,但我想把它映射成数据库的数据的字段值,我想除了改model还得改路由吧
[b]问题补充:[/b]
我举个例子(感觉有点麻烦)

表users,字段
1: name为aaa,password为111
2: name为bbb,password为222

默认页为user/index.haml,index里想判断网址是否输入user.name

如果输入http://127.0.0.1:3001/,则在index里判断user.name为空,显示为:
请登陆或注册

如果输入http://127.0.0.1:3001/ccc,则在index里判断没有此用户,显示为:
没有找到用户ccc,请先注册

如果输入有user.name的网址http://127.0.0.1:3001/aaa

登录前(登陆前后都是ajax请求,刷新局部):
此页是aaa的主页,password不显示

登陆后:
欢迎aaa,aaa的密码为111

如果输入网址http://127.0.0.1:3001/bbb

登录前:
此页是bbb的主页,password不显示

登陆后:
欢迎bbb,bbb的密码为111
[b]问题补充:[/b]
错了,bbb的密码为222

  • 写回答

6条回答 默认 最新

  • horace_lee 2009-04-20 22:08
    关注

    [quote]表users,字段
    1: name为aaa,password为111
    2: name为bbb,password为222

    默认页为user/index.haml,index里想判断网址是否输入user.name

    如果输入http://127.0.0.1:3001/,则在index里判断user.name为空,显示为:
    请登陆或注册

    如果输入http://127.0.0.1:3001/ccc,则在index里判断没有此用户,显示为:
    没有找到用户ccc,请先注册

    如果输入有user.name的网址http://127.0.0.1:3001/aaa

    登录前(登陆前后都是ajax请求,刷新局部):
    此页是aaa的主页,password不显示

    登陆后:
    欢迎aaa,aaa的密码为111

    如果输入网址http://127.0.0.1:3001/bbb

    登录前:
    此页是bbb的主页,password不显示

    登陆后:
    欢迎bbb,bbb的密码为111[/quote]

    好吧,首先,强烈建议你在http://127.0.0.1:3001/aaa的url,变成http://127.0.0.1:3001/user/aaa,其中user是固定的,aaa是用户名.
    因为,这样可以避免一个逻辑冲突
    例如,你坚持用http://127.0.0.1:3001/aaa,那么,就会限制用户名,不能和工程本身的cotroller名冲突.就是如果你有个用户是aaa那么,就不能有个cotroller是aaa,否则,路由没有办法写. 也就是说在项目本身功能很简单的情况下,才勉强可以这么用. 话虽这么说,但是,在url中不写明controller,还是有点别扭. :cry:

    无论如何,就当前的情况,看解决方案.
    
    1. router.rb可以这么写:
      [code="ruby"]
      map.root ,:controller=>'users',action=>'login'#若http://127.0.0.1:3001/,则跳到login界面
      map.connect ':controller/:action/:id'
      map.connect ':controller/:action/:id.:format'
      map.connect ':controller/:action'
      map.connect ':user',:controller=> 'users',:action=>'show_user'#处理匹配不上任何controller的输入,跳转UsersController的show_user方法.
      end[/code]

    2. users_controller.rb这么写:

    [code="ruby"]class UsersController < ApplicationController
    def login
    end

    def show_user
    ur=User.find_by_name(params[:user])#params[:user]为输入的变量并在此进行判断
    if #没有找到
    render :text=>'没有找到用户ccc,请先注册 '
    else
    if login(ur.id)?
    render :test=>"欢迎#{ur.name},#{ur.name}的密码为#{ur.passwd.pwd_salt}"
    else
    render :test="此页是#{ur.name}的主页,password不显示"
    end
    end
    end[/code]

    我简单调试了,运行没问题,但是细节要你自己调试,希望能给你一些启发吧.
    最后,还是希望,如果不是有特别的需求时,还是把url中加上要处理的controller甚至action这样,不容易混淆别的controller和输入的user名参数.

    个人意见,参考吧 :arrow: :D

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题