设置动态link_to rails

时间:2014-12-29 01:06:41

标签: ruby-on-rails dynamic link-to

我对rails非常陌生,我想动态设置某个页面的链接。我有一个名为“未完成”的表,它有一个名为“链接”的列(从“链接”更正)我希望能够在视图中调用“链接”记录来设置我的link_to链接路径。

我正在尝试这样做......

<%= link_to @unfinished.link(:p => @post.id)  do %>  FINISH <% end %>

......但那不起作用。

我的控制员说:

def show

@post = Post.find(params [:id])

   @unfinished = Unfinished.where('progress = ?', @post.progress).last

end 

并且控制器逻辑工作正常......直到我尝试将@ unfinished.link放入link_to

编辑: 错误消息:

wrong number of arguments (1 for 0)

模型

  class Unfinished < ActiveRecord::Base
  end

链接类型为:

step1_path
step2_path
step3_path

我正在制作一个多页形式,你可以在中途保存。根据@ post.progress列中的值(如1,2,3),将提供完成帖子的正确路径(step1_path,step2_path等...)

1 个答案:

答案 0 :(得分:1)

试试这个。

<%= link_to eval(@unfinished.link.to_s)  do %>  FINISH <% end %>

因为你想要的链接实际上是一个命名路由,所以你需要评估它。

但是这样你就无法传递你需要的帖子ID。

如果所有记录的路径相同(根据progress属性保存您所在的部分),您是否需要将其存储在数据库中?你可以让链接方法返回路径(你仍然需要eval)。

类似

   def link (post) 
      "step#{self.progress}_path(post.id)"
   end

然后在回来的路上评估链接。但不确定这是否有效,只是大声思考......

有些宝石可以做多阶段形式,或许可以帮助他们吗?