неопределенная локальная переменная или метод с ошибками - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть метод в контроллере -

def undo_link
  view_context.link_to("undo", revert_version_path(@page.versions.scoped.last), :method => :post)
end

Но когда я вызываю его в представлениях с "#{undo_link}".Я получаю неопределенную локальную переменную или ошибку метода.

что я делаю не так?

Обновление: здесь метод возврата в контроллере

хорошо, но тогда это возвратметод, который я получил в контроллере

def revert
  @version = Version.find(params[:id])
  if @version.reify
    @version.reify.save!
  else
    @version.item.destroy
  end
  link_name = params[:redo] == "true" ? "undo" : "redo"
  link = view_context.link_to(link_name, revert_version_path(@version.next, :redo => !params[:redo]), :method => :post)
  redirect_to :back, :notice => "Undid #{@version.event}. #{link}"
end

1 Ответ

0 голосов
/ 13 февраля 2012

Как сказал Дейв Ньютон в комментариях (+1), это принадлежит помощнику.

в helpers/pages_helper.rb:

module PagesHelper
  def undo_link
    # ...define view_context here...
    view_context.link_to("undo", revert_version_path(@page.versions.scoped.last), :method => :post)
  end
end

Обратите внимание, что вам нужно определить view_context, прежде чем это сработает, либо в указанном пространстве, передав его в качестве аргумента, либо используя переменную экземпляра, доступную для представления во время вызова вспомогательного метода.

Для вызова в представлении:

<%= undo_link %>

Если вы сделаете это ...

"#{undo_link}"

... вы получите это:

 "<a href="/revert/version/path/...">undo</a>" # <= surrounded by quotes!

, который не будет работать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...