#はじめに
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でインスタンス変数を記述しなくてもよくなり、簡潔になりました。