2011-10-17 85 views
0

我想用lambda作为一个参数的link_to下面的代码:edit.html.erb如何通过一个lambda来LINK_TO

<h2>Edit customer info</h2> 

<%= render 'form' %> 

<%= link_to(@return_to) do %> 
    Back 
    step_back() 
<% end %> 

这里是step_back的DEF:

#return link for previous page in page step 
    def step_back 
    session[:page_step] -= 1 
    end 

上述代码的问题在于,只要加载edit.html.erb就会执行step_back()。实际上,只有当用户点击后退链接时才能执行后退。我认为只有拉姆达可以实现这一点。

有什么想法?因为你用会话交互

+2

客户端代码== JavaScript的 – apneadiving 2011-10-17 13:49:28

回答

0

你的选择是有限的。

你从哪里得到那个@return_to;调用获取相同数据并重定向到其的操作可能最容易,并执行相同的会话操作。

+0

我试图避免再培训局装车后立即执行。执行应该只发生在用户点击后退链接时。有关如何记录观看历史记录并为应用程序提供返回/取消的建议? Rails:使用编辑等操作无法正常工作。 – user938363 2011-10-17 13:55:30

+0

@ user938363我明白你想要做什么,我给了解决方案 - 如果你想上的链接的点击执行服务器端的代码,那么你就需要实际调用服务器上的链接的点击然后做。当事情得到执行时,你现在正在混淆。 – 2011-10-17 14:04:05

+0

“你需要实际上通过点击链接调用服务器,然后执行”。请详细说明。 – user938363 2011-10-17 14:49:44

0

查看关于在JavaScript编写step_back()函数,并将其连接到一个onClick HTML属性上的标签,而不是使用的link_to轨帮手

然后还.preventDefault()JavaScript的事件,如果你不”不想链接到任何地方去,或者“#”

这将允许代码的页面送达前的资产编译期间执行的在浏览器中单击事件,而不是。