アプリの「注目の投稿」機能を構築しようとしています。posts
列を持つテーブルを取得しましたfeature_date
。/year/month/date
として構造化された URL をヒットし、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>
れたためだと思います(それを確認する方法がわかりません。.each が未定義のメソッドになる理由のようです)。@featured_posts
nil