rails不创建记录 - 路由问题

时间:2011-08-21 11:24:59

标签: ruby-on-rails-3

我的路线

TerritoryManagement::Application.routes.draw do

  get 'new' => 'territories#new', :as => 'new'

  root :to => 'territories#index', :as => 'territories'
  resources :territories
  resources :users
end

在我的控制器中创建

def create
  @territory = Territory.new(params[:territory])
  if @territory.save
    redirect_to root_url, :notice => "Product successfully created!"
  else
    render "new"
end

我的观点

<%= form_for(@territory) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

会生成

<form accept-charset="UTF-8" action="/" class="new_territory" id="new_territory" method="post">

我知道这个action="/"是问题,但我不明白为什么要生成它?如何修改应用程序将创建记录的路线,然后转到索引或编辑视图?

由于 托马斯

1 个答案:

答案 0 :(得分:1)

这对我有用:

TerritoryManagement::Application.routes.draw do
   get 'new' => 'territories#new', :as => 'new'
   resources :territories
   root :to => 'territories#index'
end

似乎:as选项导致了一些问题。这就是为路由命名,但由于您已经完成了'资源:地区',因此您已经为标准CRUD操作命名了路由。我还将根路由移动到文件末尾。我不记得为什么,但似乎这是Rails 2.3天里的“最佳实践”。