还有许多其他Rails2 - > 3路由问题,但我的问题不那么复杂,实际上并没有给我一个错误。那么问题呢?好吧,我想确保我没有使用额外的不必要的代码。免责声明:我是Ruby / Rails的新手,通过Simply Rails 2学习Rails3,试图调整/找出所有错误,希望能更深入地理解语言。
所以我的第一个视图是index.html.erb(在app / views / stories中)。当我最初去localhost时观看它:3000 /这样的故事说我在将url更改为localhost:3000 / stories / index之后得到了一个错误No route matches "/stories"
,页面显示完美。
看看routes.rb显示:
Shovell::Application.routes.draw do
get "stories/index"
我现在创建了第二个视图new.html.erb(在app / views / stories中):
<% form_for @story do |f| %>
<p>
name:<br />
<%= f.text_field :name %>
</p>
<p>
link:<br />
<%= f.text_field :link %>
</p>
<p>
<%= submit_tag %>
</p>
<% end %>
此视图不会显示在我尝试的任何网址上。看着服务器日志,我觉得这是一个路由的事情。我将routes.rb更改为:
Shovell::Application.routes.draw do
get "stories/index"
get "stories/new"
现在当我转到localhost:3000 / stories / new时,页面工作正常(虽然方法错误是书中练习的一部分)。
我必须手动将每个视图输入routes.rb似乎是正确的,必须有一种方法来设置root并让它识别那里的所有文件。我能这样做吗?
答案 0 :(得分:1)
仅供参考http://edgeguides.rubyonrails.org/routing.html
root :to => "stories#index" # This means you render the root url by using stories controller and index action
resources :stories # The standard way to generate a resource (with index, new, edit, show, create, update, destroy actions automatically defined for you and supports some customization)
因此,对于您的情况,resources :stories
实际上为您提供了所需的网址。