Sigh - Rails 3路由似乎仍然让我感到困惑。这是route.rb行 -
match "/ghosts/:pid" => 'ghosts#update', :constraints => { :method => 'PUT' }
以下是视图中的代码:
<%= form_tag (admin_ghosts_path(@pid), :method => :put) do |f| %>
这里是渲染的内容
<form accept-charset="UTF-8" action="/admin/ghosts.jbdlljhhxz" method="post">
但应该呈现的是
<form accept-charset="UTF-8" action="/admin/ghosts/jbdlljhhxz" method="post">
连连呢?此外,有没有办法让标准路线:
resources :ghost, :only => [:index, :show, :update] do
get :index
get :show
put :update
end
使用“:pid”代替“:id”而不像上面那样进行匹配?
答案 0 :(得分:1)
我认为您需要admin_ghost_path(@pid)
,而不是admin_ghosts_path(@pid)
。由于您正在调用没有任何常规参数的URL帮助程序,因此您传递的参数将被视为协议参数值。
要查看路由的正确帮助程序名称,请从命令提示符运行rake routes
。