Ruby 中的路由 Rails 和 RefineryCMS
Routes in Ruby On Rails and RefineryCMS
我通常使用 Java 或 Clojure 工作,我没有做过太多 Ruby 编程,因此非常感谢您的耐心等待。我刚刚创建了一个新站点,其中包含 Ruby 2.1.5、Rails 4.1.8 和最新版本的 RefineryCMS。
如果我这样做:
bundle exec rake routes
然后我看到:
new_signup GET /refinery/users/register(.:format) refinery/users#new
signup POST /refinery/users/register(.:format) refinery/users#create
但如果我将浏览器指向:
0.0.0.0:3000/new_signup
或:
0.0.0.0:3000/refinery/new_signup
我得到 404。
我应该将浏览器指向哪里才能到达这些路线?
如果我直接将浏览器指向:
http://0.0.0.0:3000/refinery/users/register
我被重定向到:
http://0.0.0.0:3000/refinery/login
我能猜到一些地方我可能需要更改设置来解决这个问题,但如果你能推荐一个地方去看看,我将不胜感激。
RefineryCMS 在内部进行管理。重定向到 /refinery/login 是因为您已经创建了超级用户(admin)。
如果您想重新注册但不记得用户名和密码,请执行以下操作:
bundle exec rake db:drop
bundle exec rake db:migrate
go to --> http://0.0.0.0:3000/refinery and register
注册后它会给你一个错误(RefineryCMS bug)但是去 --> http://0.0.0.0:3000/refinery 再次用你的新用户名和密码登录
当您键入 bundle exec rake routes
时,输出的格式为:
route_name HTTP_VERB path/to/access/this/route controller#action
当你看到:
new_signup GET /refinery/users/register(.:format) refinery/users#new
signup POST /refinery/users/register(.:format) refinery/users#create
...这向您展示了两条路线,一条名为 "new_signup",另一条名为 "signup",这两条路线都通过 /refinery/users/register.html
访问(其中 .html
是格式并且是可选的,因为它在括号中)。如果是 GET 请求,它将路由到 refinery/users
控制器中的 new
操作,如果是 POST 请求,则它会路由到 create
操作。
鉴于@manfergo25 所说的,我认为既然你的数据库中已经有一个用户,new_signup
操作现在将你重定向到登录路径以防止其他用户注册以访问你的管理员。
new_signup GET /refinery/users/register(.:format) refinery/users#new
signup POST /refinery/users/register(.:format) refinery/users#create
一共有3个部分,你应该明白了:
new_signup
- 这是命名路由,用于控制器、视图等,你不能在浏览器中使用它,它肯定会抛出 404
/refinery/users/register(.:format)
这是你应该在浏览器中输入的内容
refinery/users#new
- 这是路由的控制器和动作,其中 refinery - 它的控制器和用户的命名空间 - 控制器和#new - 动作
回答 - 您需要去 /refinery/users/register 查看注册表单
我通常使用 Java 或 Clojure 工作,我没有做过太多 Ruby 编程,因此非常感谢您的耐心等待。我刚刚创建了一个新站点,其中包含 Ruby 2.1.5、Rails 4.1.8 和最新版本的 RefineryCMS。
如果我这样做:
bundle exec rake routes
然后我看到:
new_signup GET /refinery/users/register(.:format) refinery/users#new
signup POST /refinery/users/register(.:format) refinery/users#create
但如果我将浏览器指向:
0.0.0.0:3000/new_signup
或:
0.0.0.0:3000/refinery/new_signup
我得到 404。
我应该将浏览器指向哪里才能到达这些路线?
如果我直接将浏览器指向:
http://0.0.0.0:3000/refinery/users/register
我被重定向到:
http://0.0.0.0:3000/refinery/login
我能猜到一些地方我可能需要更改设置来解决这个问题,但如果你能推荐一个地方去看看,我将不胜感激。
RefineryCMS 在内部进行管理。重定向到 /refinery/login 是因为您已经创建了超级用户(admin)。
如果您想重新注册但不记得用户名和密码,请执行以下操作:
bundle exec rake db:drop
bundle exec rake db:migrate
go to --> http://0.0.0.0:3000/refinery and register
注册后它会给你一个错误(RefineryCMS bug)但是去 --> http://0.0.0.0:3000/refinery 再次用你的新用户名和密码登录
当您键入 bundle exec rake routes
时,输出的格式为:
route_name HTTP_VERB path/to/access/this/route controller#action
当你看到:
new_signup GET /refinery/users/register(.:format) refinery/users#new
signup POST /refinery/users/register(.:format) refinery/users#create
...这向您展示了两条路线,一条名为 "new_signup",另一条名为 "signup",这两条路线都通过 /refinery/users/register.html
访问(其中 .html
是格式并且是可选的,因为它在括号中)。如果是 GET 请求,它将路由到 refinery/users
控制器中的 new
操作,如果是 POST 请求,则它会路由到 create
操作。
鉴于@manfergo25 所说的,我认为既然你的数据库中已经有一个用户,new_signup
操作现在将你重定向到登录路径以防止其他用户注册以访问你的管理员。
new_signup GET /refinery/users/register(.:format) refinery/users#new
signup POST /refinery/users/register(.:format) refinery/users#create
一共有3个部分,你应该明白了:
new_signup
- 这是命名路由,用于控制器、视图等,你不能在浏览器中使用它,它肯定会抛出 404/refinery/users/register(.:format)
这是你应该在浏览器中输入的内容refinery/users#new
- 这是路由的控制器和动作,其中 refinery - 它的控制器和用户的命名空间 - 控制器和#new - 动作
回答 - 您需要去 /refinery/users/register 查看注册表单