3

我有一个带有“Route”资源和“Route”控制器的 Rails 应用程序(不要与Rails路由混淆)。我已经进行了设置,以便站点管理员(并且只有管理员)可以通过“Route”控制器管理“Route”资源,而普通用户可以使用“Myroute”控制器管理他们的路由。我希望两个控制器都使用 RESTful 路由,但我在“Myroute”控制器的“编辑”视图中遇到了 form_for 函数的问题。

我的“Myroute”控制器的“编辑”视图的表单标签当前是:

<% form_for @route, :url => { :id => @route.id }, :html => { :method => :put } do |f| %> 

解决以下问题:

<form action="/myroutes/44/edit" class="edit_route" id="edit_route_44" method="post">

这是不正确的,因为表单的操作应该转到“create”方法,而“edit”方法只处理 GET 请求。通过查看“路由”视图生成的 HTML,我可以看出,表单应该向“/myroutes/44”发出 PUT 请求

如何编写 form_for 标记,以便它使用 RESTful 路由向与模型不同的控制器的“更新”方法发出 PUT 请求?

4

2 回答 2

8

怎么样:

<% form_for @route, :url => {:action => 'update', :id => @route.id },
 :html => { :method => :put } do |f| %>
于 2009-09-22T21:12:09.630 回答
2

事实证明这也有效:

  <% form_for @route, :url => myroute_path(@route) do |f| %>
于 2009-09-22T21:16:43.573 回答