10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

solidus内のカテゴリーと商品のidをcontrollerを使わずにテンプレートに呼び出して表示させる

Last updated at Posted at 2018-11-19

#はじめに
solidus内のtaxonomy,taxon,productのidをviewのlink_toに使用したい場合について。
当初は変更前で実装していたのですが、コントローラーを使わずに直接テンプレートに呼び出せると知ったので備忘録として記します。
以下ではtaxonomy,product共に一番最初のカテゴリー、商品を取得する実装にしてあります。

##変更前
コントローラーでインスタンス変数を定義してからビューでidを呼び出す

hogehoge_controller.rb
def index
  @taxonomy = Spree::Taxon.roots.first
  @product = Spree::Product.first
end
index.html.erb

# taxonomyのidをlink_toで使用する場合
link_to "Categories", hogehoge_category_path(@taxonomy.id)

# productのidをlink_toで使用する場合
link_to "Product", hogehoge_product_path(@product.id)

##変更後
テンプレート内で直接idを呼び出す

index.html.erb

# taxonomyのidをlink_toで使用する場合
link_to "Categories", hogehoge_category_path(Spree::Taxon.roots.first.id)

# productのidをlink_toで使用する場合
link_to "Product", hogehoge_product_path(Spree::Product.first.id)

##おわりに
テンプレート内で直接idを呼び出すことで、controllerでインスタンス変数を記述しなくてもよくなり、簡潔になりました。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?