use*_*447 2 routes ruby-on-rails scaffold
我很难理解rails 3中的路线.我创建了两个脚手架:用户和杂志.用户可以登录,但我无法链接到杂志页面.我知道这与创建路线有关.如果我通过URL导航到localhost:3000 /杂志,我可以看到我创建的多个杂志和每个用户与每个杂志相关联.我似乎无法连接点.我想创建一个从用户页面到杂志页面的链接.我知道这是基本的,但所有路线文件对我来说都没有意义.非常感谢你的时间.
rub*_*ish 19
以前的答案中指出的资源非常棒,这就是我开始的地方.我仍然会提到这个,以防我被困在某个地方.我在追索中发现的一件事是,它不包括读取路线表的解释,即命令的输出,rake routes并且需要时间来将各个部分组合在一起.虽然如果您耐心地阅读整本指南,您可以将各个部分放在一起.
在我的系统'rake routes'上给出了以下输出(摘录相关resources :messages)
messages GET /messages(.:format) {:action=>"index", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_message GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_message GET /messages/:id/edit(.:format) {:action=>"edit", :controller=>"messages"}
message GET /messages/:id(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages/:id(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages/:id(.:format) {:action=>"destroy", :controller=>"messages"}
Run Code Online (Sandbox Code Playgroud)
此表中的所有列都提供了非常重要的信息:
messages_path和messages_url作为辅助方法.查看表格,您可以messages_path生成"/messages(.:format)"形式的路径.类似地,生成的其他路由名称是"new_message","edit_message"和"message".您还可以控制路线的命名.messages_pathhttp"GET",它将匹配第一条路线,如果您使用"POST",它将匹配第二条路线.这是非常重要的注意,具有不同http动词的相同url可以映射到不同的路由.(.+)捕获参数"id"中的匹配,因此您可以执行类似操作params[:id]并获取捕获的字符串.大括号()表示此参数是可选的.您还可以在帮助程序中传递这些参数以生成相应的路径.例如,如果您使用message_path(:id => 123)is将生成输出"/ messages/123".因此,如果"localhost:3000/magazines"是您想要的页面,您应该使用url模式检查路由表为"/magazines(.:format)"并自行解析以找出您需要的内容.如果您刚开始使用轨道,我建议您从上到下阅读整个指南.
(这可能只是在这里编写所有这些可能只是一种矫枉过正,但由于这些信息无法以统一的方式提供,因此我遇到了许多问题.一直想写出来并最终完成.我希望它可以在http://上找到edgeguides.rubyonrails.org/routing.html在另一部分.)