我正在尝试为我的应用程序构建一个“精选帖子”功能。我有一个posts
带有列的表feature_date
。我正在努力做到这一点,以便您可以点击结构化的 URL/year/month/date
并显示与 URL 中的日期匹配的 feature_date 的所有条目。
我routes.rb
正在正确路由到帖子控制器:
match "/:year/:month/:day", to: 'posts#index', via: 'get', :constraints => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ }, :as => 'post_date'
但是,我认为我没有post_controller.rb
正确使用:
def index
@date = params[:year].to_s + "/" + params[:month].to_s + "/" + params[:day].to_s
@featured_posts = Post.find_by(feature_date: @date)
end
这似乎太不优雅了,不能成为 Ruby 中的正确方法。
我的观点正在打破,但我认为它来自控制器:
<% @featured_posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.url %></td>
<td><%= post.user.name %></td>
<td><%= link_to 'Delete', post_path(post), method: :delete, data: { confirm: "Are you sure?" } %></td>
</tr>
<% end %>
它抛出的错误是undefined method 'each' for #<Post:0x007f94393bc7a0>
,但我相信这是因为@featured_posts
正在返回nil
(我不确定如何确认,这似乎是 .each 是未定义方法的原因)。