Понимаю, что дублирование это очень плохо. Но совсем нет идей, как от него здесь избавиться.
Любые действия с follow и unfollow создают почти идентичный код.
Какой подход использовать? В какую сторону глядеть?
class UserFollows
constructor: (@container) ->
@user_id = @container.data 'user-id'
@get_follow_status()
@container.find('.follow-link').on 'click', @follow
@container.find('.unfollow-link').on 'click', @unfollow
get_follow_status: ->
$.post "/u/#{@user_id}/already_following", (data) ->
if data == 'yes'
@set_unfollow()
else
@set_follow()
follow: (e) =>
e.preventDefault()
$.post "/u/#{@user_id}/follow", ->
@set_follow()
unfollow: (e) =>
e.preventDefault()
$.post "/u/#{@user_id}/unfollow", ->
@set_unfollow()
set_follow: ->
@container.removeClass 'follow-container_unfollow'
@container.addClass 'follow-container_follow'
set_unfollow: ->
@container.removeClass 'follow-container_follow'
@container.addClass 'follow-container_unfollow'