【问题标题】:Rails not finding controller actionRails 找不到控制器动作
【发布时间】:2012-07-03 01:21:35
【问题描述】:

所以,我有以下链接:

 <%= 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

【问题讨论】:

    标签: ruby-on-rails model-view-controller routes


    【解决方案1】:

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

    outing_add_guests_path
    outings_add_guests_path
    

    您是否通过rake routes 验证outing_add_guests_path 存在?

    编辑:

    您的 rake routes 表明您需要一个 outing_id,因此您的路线设置不正确(至少对于 POST 而言不是)。我会按照@RyanBigg 建议的方式修复它们。

    【讨论】:

    • 我尝试将其更改为 outings_add_guests_path,但它说该方法未定义。我已经在上面添加了我的 rakes 路线。
    • 是的,这实际上是问题所在。这是一个新郊游的视图,但添加客人是为了将客人添加到现有郊游,所以它需要一个 outing_id。
    【解决方案2】:

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

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

    这将为指定的操作定义新的路由,并为这些路由自动定义路由助手。更多信息请阅读Routing Guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多