2011-01-23 101 views
2

好吧,在这里得到一个相当奇怪的路由错误。“没有路由匹配”的错误,但耙路径发现它

No route matches {:controller=>"subscriptions", :action=>"change"} 

Extracted source (around line #22): 

19:  <td><%= s.product.name %></td> 
20:  <td><%= s.calc_time_to_next_arrival %></td> 
21:  <td> 
22:   <%= form_for(:subscription, s, :url => { :action => "change" }, :id => s) do %> 
23:    <%= label_tag(:q, "Days to delay:") %> 
24:    <%= text_field_tag(:query) %> 
25:    <%= check_box_tag(:always) %> 

然而,如果我跑耙的路线,这是我所得到的

change_subscription GET /subscriptions/:id/change(.:format {:controller=>"subscriptions", :action=>"change"} 

相当肯定,意味着它应该有。不知道发生了什么事。

这里就是路由在routes.rb中

resources :subscriptions do 
    member do 
     get 'change' 
    end 
    end 

说这里的控制器,虽然用于订阅

def change 
    @subscription = Subscription.find(params[:id]) 
    @subscription.change(:query, :always) 
    redirect_to :back 
    end 

回答

4

这应该是 post 'change',而不是 get 'change'

尔当然,我的意思是put 'change'

如何:

<%= form_for s, :url => change_subscription_path(s) do |f| %>

+0

已经试过了。再试一次,然后重新启动服务器以获得更好的效果。耙路线的输出已正确更新,仍然出现此错误。 (同样,试图“放”只是为了咯咯地笑) – 2011-01-24 00:03:25

相关问题