【问题标题】:rails 3 routes: different auto route for modelrails 3路线:模型的不同自动路线
【发布时间】:2011-01-05 11:06:37
【问题描述】:

所以我有一个名为 Photoset 的模型类和一个名为 Sets 的控制器。 我得到了资源 :sets 适用于一切,除了从模型的实例生成路径时。例如,如果我使用:

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

我得到了错误:

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

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

有什么方法可以做到这一点并且仍然可以使用助手吗?

--编辑-- 这是我的 rake 路由输出:

    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 控制器绑定,但我不知道如何指定。

【问题讨论】:

  • 你能显示rake routes的输出吗?

标签: ruby-on-rails routes


【解决方案1】:

您有一个 Photoset 模型,Sets 控制器和 url 需要采用 /sets/1/edit 格式。

resources :sets, :as => "photosets"

使用这样的简单表单:

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

【讨论】:

  • 保持所有这些功能相同,有没有办法改变它,以便只是 url 不同?而不是/photosets/1/edit 我能做到/sets/1/edit 吗?我仍然想使用form_for(@photoset),但我希望它指向/sets/...
【解决方案2】:

你应该设置

resources :photosets, :as => "sets"

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

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

【讨论】:

  • 这会将助手从 photoset_path 更改为 set_path 不幸的是,url 仍然是 /photoset 。检查您发布的路由指南链接的第 4.3 节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多