如何每天更改链接的路径

时间:2018-09-14 03:56:14

标签: ruby-on-rails ruby-on-rails-5 link-to

我将在我的网站上发布日常锻炼。我想在导航栏中放置一个类似“今天的锻炼”之类的链接。我将预先创建锻炼,然后我希望链接的路径成为当前锻炼的显示页面。我从来没有做过这样的事情,所以我真的不知道这个过程。

我有一列scheduled_on作为我希望其发布的日期。有没有办法将链接的路径推送到scheduled_on日期?

2 个答案:

答案 0 :(得分:1)

您可以创建一个辅助方法,该方法可以找到并返回所需的锻炼:

def todays_workout
    Workout.find_by_scheduled_on(Date.today.to_s).url
end

然后您可以在链接标记中调用helper方法:

<%= link_to todays_workout, "Today's workout" %>

答案 1 :(得分:1)

我将创建一条单独的路由并保持链接路径不变:

# routes.rb
resources :workouts do
  get :todays, on: :collection
end


# app/controllers/workouts_controller.rb
class WorkoutsController < ApplicationController
  # ...
  def todays
    @workout = Workout.where(scheduled_on: Date.today).first
    # you can choose between redirecting 
    redirect_to @workout
    # or rendering
    render :show  
  end
end

# in the view
<%= link_to 'Latest Workout', todays_workouts_path %> 

我创建一个单独的路由而不是拥有“动态”链接的原因是可能将响应缓存在反向代理中以提高性能。并具有今天在控制器中而不是在视图中进行锻炼的逻辑。