【问题标题】:Rails routes url edit_pathRails 路由 url 编辑路径
【发布时间】:2015-04-17 10:10:43
【问题描述】:

我的路线有问题:

No route matches events/edit_national_event

生成的网址: http://localhost:3000/events/edit_national_event.:id

我需要: http://localhost:3000/events/:id/edit_national_event

它适用于销毁但不适用于编辑。我的代码有什么问题?

路线:

 resources :events, only: [:index, :destroy] do
    collection do
      get :new_national_event
      get :new_local_event
      post :create_national_event
      post :create_local_event
    end
    member do
      get :edit_national_event
      get :edit_local_event
      put :update_national_event
      put :update_local_event
    end
  end

事件控制器:

def edit_national_event
   @event = Event.find(params[:id])
end

查看:

@group_events.each do |event|
  tr
    td
      =event.title
    td
      =link_to edit_national_event_event_path(event)
      =link_to event_path(event), method: :delete

当我在做 rake 路线时:

new_national_event_events GET    /events/new_national_event(.:format)                                   events#new_national_event
new_local_event_events GET    /events/new_local_event(.:format)                                      events#new_local_event
create_national_event_events POST   /events/create_national_event(.:format)                                events#create_national_event
create_local_event_events POST   /events/create_local_event(.:format)                                   events#create_local_event
edit_national_event_event GET    /events/:id/edit_national_event(.:format)                              events#edit_national_event
edit_local_event_event GET    /events/:id/edit_local_event(.:format)                                 events#edit_local_event
update_national_event_event PUT    /events/:id/update_national_event(.:format)                            events#update_national_event
update_local_event_event PUT    /events/:id/update_local_event(.:format)                               events#update_local_event
events GET    /events(.:format)                                                      events#index
event DELETE /events/:id(.:format)                                                  events#destroy

【问题讨论】:

    标签: ruby-on-rails-3 routing


    【解决方案1】:

    正如您在rake routes 输出中看到的那样,您正在寻找的路线显示为/events/:id/edit_national_event(.:format)。这意味着它需要 URL 中的事件 ID。你没有提供一个,这就是它不匹配的原因。

    它需要一个 ID 的原因是您在 member 块中定义路由,而不是 collection 块。如果您不希望 URL 中有 ID,请将路由移至 collection 块。如果您确实需要 ID,请确保在链接到该操作时包含它。

    【讨论】:

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