我对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等...)
答案 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
然后在回来的路上评估链接。但不确定这是否有效,只是大声思考......
有些宝石可以做多阶段形式,或许可以帮助他们吗?