rails 3路线:不同的模型自动路线

时间:2011-01-05 11:06:37

标签: ruby-on-rails routes

所以我有一个名为Photoset的模型类和一个名为Sets的控制器。 我有资源:除了从模型实例生成路径之外,设置为所有事情工作。例如,如果我使用:

<%= form_for(@photoset) do |f| %>

我收到错误:

 no route matches {:controller=>"sets"}

最终我希望所有的uris都是... / sets / ...(控制器名称)而不是... / photosets / ...(型号名称)

有没有办法做到这一点,仍然可以使用助手?

- 编辑 - 继承我的佣金路线输出:

    sets GET    /sets(.:format)          {:controller=>"sets", :action=>"index"}
         POST   /sets(.:format)          {:controller=>"sets", :action=>"create"}
 new_set GET    /sets/new(.:format)      {:controller=>"sets", :action=>"new"}
edit_set GET    /sets/:id/edit(.:format) {:controller=>"sets", :action=>"edit"}
     set GET    /sets/:id(.:format)      {:controller=>"sets", :action=>"show"}
         PUT    /sets/:id(.:format)      {:controller=>"sets", :action=>"update"}
         DELETE /sets/:id(.:format)      {:controller=>"sets", :action=>"destroy"}

所有这些都是花花公子,问题是当我尝试从模型实例构建表单时。我知道rails无法知道我试图将Photoset模型直接与Set控制器绑定,但我不知道如何指定它。

2 个答案:

答案 0 :(得分:10)

您有一个Photoset模型,设置控制器和网址需要采用/sets/1/edit格式。

resources :sets, :as => "photosets"

使用这样的简单形式:

<%= form_for(@photoset) do |f| %>
    <%= f.text_field :title %>
    <%= f.submit "Save" %>
<% end %>

答案 1 :(得分:-1)

你应该设置

resources :photosets, :as => "sets"

允许您使用photosets_pathphotoset_pathnew_photoset_path等...但是将网址显示为sets

如果您需要更多信息,请参阅here