gpt4 book ai didi

ruby-on-rails - 路由到 slug 时出现 Rails 路由错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:48 25 4
gpt4 key购买 nike

我有一个指向正确页面的以下链接,即/events/tech/schedule,但我收到路由错误。

<%= link_to "View Schedule", event_sessions_path(@event.slug) %>

错误

ActionController::RoutingError 在/events/tech/schedule未找到

路线

resources :events do
resources :sessions, path: "schedule", only: [:index]
end

session Controller

before_filter :find_event

private

def find_event
@event = Event.find_by(slug: params[:id])
#@event = Event.find(params[:event_id]) This works if I use <%= link_to event_sessions_path(@event.id) %>
end

如果我使用事件 ID 链接到,我不会收到任何错误,但这看起来很难看,不是一个很好的解决方案。

编辑-添加rake路线

event_sessions     GET        /events/:event_id/schedule(.:format)                            sessions#index

最佳答案

这是您的解决方案:

@event = Event.find_by(slug: params[:event_id])

使用 resourceful routes 时在你拥有的结构中,你最终会得到这样的结果:

events/:event_id/schedule #-> to schedules#index with params[:event_id]

变量的名称 并不重要——重要的是内容。 :event_id 可以保存任何东西(idslug),重要的是你如何在 Controller 中处理它

如果您将 Event.find_by 方法更改为使用 event_id 参数,您将能够找到您需要的内容


friendly_id

处理此问题的更好方法是使用 friendly_id

如果您在 friendly_id 中使用 finders 模块, 您将能够搜索 idslug 像这样:

Event.find params[:event_id]

关于ruby-on-rails - 路由到 slug 时出现 Rails 路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com