【发布时间】:2012-09-01 05:10:53
【问题描述】:
我知道 rails 使用控制器操作样式的 url,例如 www.myapp.com/home/index
我想在我的 Rails 应用程序上有一个这样的网址,www.myapp.com/my_page_here 这可能吗?如果可以,我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby url url-routing
我知道 rails 使用控制器操作样式的 url,例如 www.myapp.com/home/index
我想在我的 Rails 应用程序上有一个这样的网址,www.myapp.com/my_page_here 这可能吗?如果可以,我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby url url-routing
你只需要制定一个路由规则来匹配那个 url 在这种情况下,它将类似于
match 'my_page_here' => 'your_controller#your_action'
您的控制器和操作将指定该页面的行为
所以你可以做
match 'my_page_here' => 'home#index'
或
get 'my_page_here', :to => 'home#index'
正如其他回复中所建议的那样。
如果您有这样的控制器,则用于家庭控制器中的索引操作
【讨论】:
match 已旧,不应使用!
您只需在routes.rb 文件中的任何resources 或namespace 块之外使用get:
get 'my_page_here ', :to => 'home#index'
假设您使用的是 Rails 3+,请不要使用 match。这可能很危险,因为如果页面接受来自表单的数据,它应该接受 POST 请求。 match 将允许对具有副作用的操作发出 GET 请求 - 这不好。
尽可能使用get、put、post 或这些变体。
要获得路径助手,请尝试:
get 'my_page_here ', :to => 'home#index', :as => :my_page
这样,在您看来,my_page_path 将等于 http://{domain}/my_page_here
【讨论】:
:as => :my_page,你会得到一个my_page_path helper 在你的视图中使用。
my_page_path 将返回"/my_page_here"。