【发布时间】:2012-06-17 18:41:44
【问题描述】:
注意:我已经阅读了从内到外的路由和关于路由的引擎场博客文章。
我正在建立一个梦幻体育联盟,我有一个联盟模型,它支持七种基本的静止操作,它们都运行良好。
我添加了以下我的 routes.rb
resources :leagues do
member do
get :invite
post :sendem
end
在文件的后面我有一个资源:用于基本操作的联盟
当我搜索路线时,我可以看到:
invite_league GET /leagues/:id/invite(.:format) {:action=>"invite", :controller=>"leagues"}
sendem_league POST /leagues/:id/sendem(.:format) {:action=>"sendem", :controller=>"leagues"}
这是我所期望的。我在 League 控制器中有两个函数:“invite”,它创建用于收集电子邮件地址的表单,以及“sendem”,它调用邮件程序来实际发送邀请。
/league/:id/invite 的 get 确实会生成表单。 我使用的表单标签如下所示:
<%= form_tag(sendem_league_path, :method => "post") do %>
而呈现的 HTML 看起来像:
<form accept-charset="UTF-8" action="/leagues/1" class="edit_league" id="edit_league_1" method="post">
因此在提交时会生成一个完全错误的 PUT。 (它应该发布到 sendem 函数。)我对路由文件的更改出现在 通用资源 :leagues 行之上,因此它应该具有更高的优先级。
我确定我错过了一些非常简单的东西,但我没有想法。 (还有头发)。
【问题讨论】:
-
尝试 :method => :post 并删除括号。
-
MurifoX 没有区别 :(
-
为什么没有类似 form_tag(sendem_league_path(league.id)).... 我的意思是你的路线需要一个参数
标签: ruby-on-rails-3 rails-routing