我在控制器中有一个方法 -
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
答案 0 :(得分:0)
正如Dave Newton在评论(+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!
将无效。