Rails3路由这是最好的方法吗?

时间:2010-11-04 01:58:18

标签: ruby-on-rails-3 routes

还有许多其他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并让它识别那里的所有文件。我能这样做吗?

1 个答案:

答案 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实际上为您提供了所需的网址。