前提・実現したいこと
画像をクリックするとcategoryのidを割り当てた一覧ページへ遷移する機能を作ろうとしています。
画像は6枚あり、それぞれにcategory_idを6つ割り当てたいと考えています。
遷移先にはviews/categories/index.html.hamlを想定しています。
発生している問題・エラーメッセージ
現在、category_idを指定する記述が分からず困っています。
link_toでそれぞれのcategory_id一覧表示ページへリンクを作りたいのですが、可能でしょうか?
- index.html.haml
ruby
1.category 2 .category-upper 3 .category-upper__b 4 = link_to "#", class: "category-upper__b__icon" do 5 = icon('fas', 'test') 6 .category-upper__f 7 = link_to "#",class: "category-upper__f__icon", do 8 = icon('fas', 'test') 9 .category-upper__bi 10 = link_to "#", class: "category-upper__bi__icon" do 11 = icon('fas', 'test') 12 .category-row 13 .category-row__am 14 = link_to "#", class: "category-row__am__icon" do 15 = icon('fas', 'test') 16 .category-row__re 17 = link_to "#", class: "category-row__re__icon" do 18 = icon('fas', 'test') 19 .category-row__ma 20 = link_to "#", class: "category-row__ma__icon" do 21 = icon('fas', 'test')
該当のソースコード
- posts.controller
ruby
1class PostsController < ApplicationController 2 3 def index 4 @posts = Post.includes(:user).limit(10).order("created_at DESC") 5 @posts = Post.where(category_id: params[:category_id]).order("created_at DESC") 6 @post = Post.new 7 end 8 9 def show 10 @post = Post.find(params[:id]) 11 @posts = Post.where(category_id: params[:category_id]) 12 end 13end
- post.rb
ruby
1class Post < ApplicationRecord 2 extend ActiveHash::Associations::ActiveRecordExtensions 3 belongs_to_active_hash :category 4 5 belongs_to :user,foreign_key: "user_id" 6 7 validates :category_id, presence: true 8 validates :text, presence: true, unless: :image? 9 validates :image, presence: true,unless: :text? 10 mount_uploader :image, ImageUploader 11 12 def self.category(category_id) 13 if search 14 Post.where(category_id: category_id) 15 else 16 Post.all 17 end 18 end 19end
- routes.rb
ruby
1Rails.application.routes.draw do 2 root "posts#index" 3 resources :posts 4 resources :users, only: [:new, :show, :create] 5 resources :category, only: [:index] 6end
現在category情報を拾って投稿はできます。
詳細画面から、category編集も可能です。
試したこと
category_pathにidを持たせる記述を試してみましたが、
構文エラー(SyntaxError)エラーが出てしまいます。
補足情報(FW/ツールのバージョンなど)
models/category.rb内にactivehashでcategoryを指定しています。
ruby
1class Category < ActiveHash::Base 2 3 self.data = [ 4 {id: 1, name: 'テスト'}, {id: 2, name: 'テスト'}, {id:3, name: 'テスト'}, {id: 4, name: 'テスト'}, {id: 5, name: 'テスト'}, {id: 6, name: 'テスト'} 5 ] 6 7 include ActiveHash::Associations 8 has_many :posts 9 10end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 10:36
2020/08/25 10:46
2020/08/25 11:44