如何将lambda传递给link_to

时间:2011-10-17 13:14:54

标签: ruby-on-rails ruby-on-rails-3.1

我想使用lambda作为link_to的参数,代码如下:edit.html.erb

<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()。实际上只应在用户单击Back链接时执行step_back。我认为只有lambda才能做到这一点。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

由于您正在与会话进行互动,因此您的选项有限。

你从某个地方得到@return_to;调用一个获取相同数据并重定向到它的动作并执行相同的会话操作可能是最简单的。

答案 1 :(得分:0)

请参阅在javascript中编写step_back()函数并将其附加到标记上的onClick html属性,而不是使用link_to rails helper

然后还.preventDefault()使用javascript的事件,如果你不希望链接去任何地方,或'#'

这将允许代码在浏览器中的click事件上执行,而不是在服务页面之前的资产编译期间执行。