我尝试构建食谱网络应用程序。这是一种“游戏”。每个用户都有可能喜欢食谱。起初,这个看起来是空的。然后,用户应该每隔一小时(或半小时)接收配方的每一步。
目前,我有这些模特:
class Recipe < ApplicationRecord
belongs_to :user
has_many :steps
has_many :favorites
has_many :favorited_by_users, :through => :favorites, :source => 'user'
class Step < ApplicationRecord
belongs_to :recipe
end
class Favorite < ApplicationRecord
belongs_to :recipe
belongs_to :user
end
class User < ApplicationRecord
has_many :recipes
has_many :favorites
has_many :favorite_recipes, :through => :favorites, :source => 'recipe’
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
在我的步骤控制器中,我有:
def index
@recipe = Recipe.find(params[:recipe_id])
@steps = @recipe.steps
end
我想在我的索引步骤视图中显示:
用户喜欢的食谱的每一步,但是一个接一个地延迟(每个出版物之间1mn或10mn,无论......可配置的东西)。是否可以隐藏步骤的名称,并在点击后显示它?
#views/steps/index.html.erb
<h2><%=Recipe.name%></h2>
<% @steps.each do |step| %>
<p> <%=step.name%></p>
#30mn later… the second step
<p> <%=step.name%></p>
#30mn later… the third one…
<p> <%=step.name%></p>
等等...
怎么可能?我应该使用cron还是Active Job?但我该怎么办?
提前感谢! ;)
答案 0 :(得分:0)
您可以渲染DOM中的所有步骤,然后执行javascript来显示您的步骤,但这意味着每次重新加载页面时,您都会再次从步骤1开始。
如果您想要保留进步,则需要将进度存储在参考配方和用户的某个表格中。
之后,选择您的规则来检查改进,定期Ajax查询以注册新显示的步骤等等。