【问题标题】:How to make rails root change daily?如何让rails root每天更换?
【发布时间】:2016-07-26 18:55:57
【问题描述】:

我正在为客户构建一个调度平台。一项要求是根目录是今天的日程安排的显示页面。其他日子的时间表也都需要自己的节目页面。

我知道如何编写一个查询来找到今天的日程安排,但我很难弄清楚如何将它与我的路线文件联系起来。

这就是我目前所拥有的——现在我正试图让它按照今天的时间表呈现显示页面。我可以为此构建一个自定义视图,但我尽量不重复自己,它确实与常规节目完全相同相同。

在调度控制器中:

def show
    @schedule = Schedule.find(params[:id]) #this is actually done in a :set_schedule before_action callback, but I'm show it it here for clarity.
  end

  def today
    @schedule = Schedule.find_by_date("#{Time.now.year}-#{Time.now.month}-#{Time.now.day}")
    if @schedule 
      render 'schedules/show' #How do I tell it to render the show page for @schedule here??
    else
      render 'welcome#index'
    end
  end

当我尝试访问 myapp.com/schedules/today 时会引发错误(没有 id = 今天的日程安排)。

我想一旦我得到这个工作,我可以在我的 routes.rb 中做到这一点:

root 'schedules#today'

我想知道——这是正确的方法吗?如果是这样,您能否为我的自定义控制器操作提供一些帮助?如果没有,你会怎么做?

【问题讨论】:

  • 您希望render "schedules/show" 让它按计划呈现显示视图。
  • 我如何告诉它呈现查询找到的时间表?我仍然收到错误消息,因为它正在尝试查找 id = today 的日程安排。
  • 它将渲染显示视图。显示视图似乎使用@schedule,因为您在今天的操作中定义了它,它将使用该时间表。

标签: ruby-on-rails ruby-on-rails-4 controller routing


【解决方案1】:

我敢打赌,您的路由文件中有一个resource :schedules 条目,它将拦截schedules/today 并将today 视为显示操作的ID。

您需要将收集方法today 添加到该资源路由定义中。

resources :schedules do 
  collection do
    get :today
  end
end

类似的东西应该能让你到达那里!

【讨论】:

  • 成功了!谢谢你。我在我的 routes.rb 文件中得到了 :today,但不在那个集合块中。
猜你喜欢
  • 2021-11-14
  • 2012-12-05
  • 1970-01-01
  • 2011-05-01
  • 2018-07-03
  • 2018-02-03
  • 2014-07-04
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多