Я пытаюсь научиться использовать помощников в моем приложении Rails 5.
У меня есть модель org_requests, в которой есть атрибуты для хранения даты выполнения различных шагов. Я пытаюсь использовать контроллер для обновления этих атрибутов при сохранении соответствующего действия контроллера.
Например, у меня есть атрибут с именем :approved_at. В моем контроллере у меня есть действие, одобренное с помощью:
def approved
@org_request = current_user.organisation.org_requests.find(params[:id])
if @org_request.state_machine.transition_to!(:approved)
@org_request.update_attribute(approved_at: Time.zone.now)
flash[:notice] = "You've added this member."
redirect_to org_requests_path
else
flash[:error] = "You're not able to manage this organisation's members"
redirect_to :index
end
end
Я думаю, что эта строка:
@org_request.update_attribute(approved_at: Time.zone.now)
следует экономить время сейчас, когда одобренное действие сохраняется.
На мой взгляд, я пытаюсь отобразить время, когда были предприняты соответствующие действия. Для этого я пытаюсь написать:
<% @org_requests.each do |org_req| %>
<%= text_for_time_of_status_change(org_req.current_state) %>
Затем у меня есть помощник, который имеет:
def text_for_time_of_status_change(current_state)
case current_state
when 'requested'
org_request.requested_at.try(:strftime, ' %l:%M %e %B %Y')
when 'approved'
org_request.approved_at.try(:strftime, ' %l:%M %e %B %Y')
when 'rejected'
org_request.rejected_at.try(:strftime, ' %l:%M %e %B %Y')
when 'removed'
org_request.removed_at.try(:strftime, ' %l:%M %e %B %Y')
end
end
Я не могу дать своему помощнику такой org_request (потому что он не примет '.'):
def text_for_time_of_status_change(org_request.current_state)
Это неправильно. Я даже не уверен, нужно ли мне использовать «@» перед org_request (хотя я получаю сообщение об ошибке, когда пытаюсь это сделать).
Может ли кто-нибудь увидеть, что мне нужно сделать, чтобы использовать помощник представления?
Эти статьи: http://6ftdan.com/allyourdev/2015/01/28/rails-helper-methods/, кажется, предполагает, что помощники не предназначены для использования в логике представления. Возможно, они предназначены для каких-то других типов действий. Я не уверен, что даже пытаюсь использовать помощника по назначению.