1

所以,我有以下链接:

 <%= link_to(outing_add_guests_path, :class => 'modal') do %>
 <div id="notImportant"></div>
 <% end %>

当我点击它时,Rails 告诉我

No route matches {:controller=>"outings", :action=>"add_guests"}

但是,这是我的路线文件:

resources :outings do
  get "/add_guests" => "outings#add_guests"
  post "/add_guests" => "outings#add_guests"
  delete "/remove_guests" => "outings#remove_guests"
end

以及我的 Outings Controller 的相应操作:

def add_guests
    @outing_guest = OutingGuest.new(:outing_id => params[:outing_id])
    @outing_guest.user_id = params[:user_id]
    if @outing_guest.save
        flash[:notice] = "Guest added successfully"
        redirect_to({ :action => 'outing', :id => params[:outing_id] })
    else
        flash[:notice] = "Guest could not be added"
        redirect_to({ :action => 'outing', :id => params[:outing_id] })
    end
end

Rails 是否有任何原因无法检测到我的控制器或其操作?

编辑:这是 rake 路线的部分结果

            outing_add_guests GET    /outings/:outing_id/add_guests(.:format)                outings#add_guests
                              POST   /outings/:outing_id/add_guests(.:format)                outings#add_guests
4

2 回答 2

1

我注意到您link_to的路线与其他路线不一致

outing_add_guests_path
outings_add_guests_path

你有没有rake routes验证它的outing_add_guests_path存在?

编辑:

你的rake routes节目你需要一个outing_id所以你的路线设置不正确(至少不是为了POST)。我会按照@RyanBigg 建议的方式修复它们。

于 2012-07-03T01:25:42.170 回答
1

您应该使用以下collection方法定义这些路由:

resources :outings do
  collection do
    get :add_guests
    post :add_guests
    delete :remove_guests
  end
end

这将做的是为指定的操作定义新的路由,以及为这些路由自动定义路由助手。如需更多信息,请阅读路由指南

于 2012-07-03T01:29:56.550 回答