Return multiple link_to in decorator
1 min readMay 17, 2020
This is a short story, but I didn’t know how to make it, so I’m going to take a note. The gem is active_decorator. =>(https://github.com/amatsuda/active_decorator)
The issue
The previous code was below.
module TestOrderDecorator def status_link case status when Order::ORDERED link_to('accept', agree_path(current_user, self), method: :post) when Order::AGREED link_to 'go to page', feedback_order_path(self.order) end endend
And, what if you have to add another “link_to” to “when Order::ORDERED”? When I wrote the codes, it became like below.
module TestOrderDecorator def status_link case status when Order::ORDEREDlink_to 'accept', agree_path(current_user, self), method: :post , link_to 'refuse', refuse_path(current_user, self), method: :post when Order::AGREED link_to 'go to page', feedback_order_path(self.order) end endend
However, it didn’t work.
The solution
The right way is below.
module TestOrderDecorator def status_link case status when Order::ORDEREDlink_to('accept', agree_path(current_user, self), method: :post) + link_to('refuse', refuse_path(current_user, self), method: :post) when Order::AGREED link_to 'go to page', feedback_order_path(self.order) end endend
It worked!!