1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
---
layout: default
title: Helpers
parent: How-to guide
---
# Helpers
Helpers must be included to be used:
```ruby
module IconHelper
def icon(name)
tag.i data: { feather: name.to_s }
end
end
class UserComponent < ViewComponent::Base
include IconHelper
def profile_icon
icon :user
end
end
```
## Proxy
Since 1.5.0
{: .label }
Or, access helpers through the `helpers` proxy:
```ruby
class UserComponent < ViewComponent::Base
def profile_icon
helpers.icon :user
end
end
```
Which can be used with `delegate`:
```ruby
class UserComponent < ViewComponent::Base
delegate :icon, to: :helpers
def profile_icon
icon :user
end
end
```
## Nested URL helpers
Rails nested URL helpers implicitly depend on the current `request` in certain cases. Since ViewComponent is built to enable reusing components in different contexts, nested URL helpers should be passed their options explicitly:
```ruby
# bad
edit_user_path # implicitly depends on current request to provide `user`
# good
edit_user_path(user: current_user)
```
|