Помощники для представлений, это их точка зрения. Они не должны быть доступны в контроллере, они специально предназначены для отработки логики многократного использования. Если вам нужен метод, доступный как для контроллера, так и для его представлений, определите метод protected
в контроллере и предоставьте его представлению через helper_method
.
В этом примере метод has_edit_right?
, определенный в контроллере, также будет доступен для представлений.
# app/controllers/posts_controller.rb
class PostsController < ApplicationController
helper_method :has_edit_right?
# ...
def edit
raise "Access Denied" unless has_edit_right?
# ...
end
protected
def has_edit_right?
current_user.admin?
end
end
# app/views/posts/show.html.erb
<% if has_edit_right? %>
<%= link_to "Edit Post", edit_post_path(@post) %>
<% end %>