我是一个总是喜欢sinatra而不是rails的人,并且从来没有做过足够大规模的项目,需要使用rails(我读过的所有资料都说rails对于大型项目更好)现在我必须做一个大型项目。我对导轨的url结构非常困惑。我要做的是轨道相当于:
get "/" do
erb :index
end
get "/home" do
erb :dashboard
end
get "/home/profile" do
erb :profile
end
get "/home/friends" do
erb :friends
end
在第一篇文章中,我了解到我应该加入app/routes.rb
我应该放root home#index
并在home
控制器中放置def index end
。
在第二个中,我理解除了用home替换索引之外我应该这样做。
但对于第三个和第四个,我不知道该怎么做。
另外,前两个是RESTful方式吗?
答案 0 :(得分:1)
你可能想要这样的东西
root 'home#index'
get 'home' => 'home#dashboard'
get 'home/profile' => 'home#profile'
get 'home/friends' => 'home#friends'
请记住使用命令rake routes
来查看所有路线,他们的路线以及他们的名字(如果有的话)
我从未理解RESTful的含义,因此其他人必须回答你问题的那一部分。
K M Rakibul伊斯兰教向您展示了所谓的“足智多谋”#34;做路线的方式(因为它使用关键字resources
),但看起来你只是在这个阶段做静态页面,所以没有必要。
执行路线的最简单方法是使用以下公式:
method url => controller::action, as: route_name
其中method
可以是get
,post
,patch
或delete
,因此您可以将不同的操作链接到同一网址,具体取决于方法请求使用。
在路线上添加名称是可选的,但它为您提供了一种在视图中使用路线的简洁方法(route_name_path
)
当您开始制作模型时,您会发现使用resources
关键字会派上用场。了解它。
答案 1 :(得分:0)
你可以拥有:
resources :home do
collection do
get :profile
end
collection do
get :friends
end
end
end
这将为您提供如下路线:
profile_home_index GET /home/profile(.:format) home#profile
friends_home_index GET /home/friends(.:format) home#friends
声明根路径的标准方法:
root 'home#index'
对于第二个,你必须这样做:
get 'home' => 'home#dashboard'
将为您提供此路线:
GET /home(.:format) home#dashboard
可以通过多种方式定义一条路线。但是,在Rails应用程序中定义路由时,Rails会遵循惯例。
我强烈建议您查看Rails Routing Guide