生成带参数的链接路径

时间:2010-06-03 11:31:02

标签: ruby-on-rails ruby

我有很多协会的模特。

用户:has_many => :帖子,:视频,图片等

我有辅助方法,它接收一个这种关联

draw_chart user.videos

def draw_chart(assoc)
  assoc.each do |a|
    link_to "update", [a.user, a], :method => :put, :remote => true, :confirm => 'orrly?'
  end
end

这里的问题是发送额外的参数来更新动作。

例如,我想获取此网址:/users/1/videos/2?status=done但我很困惑如何在使用[a.user, a]而不是user_videos_path(video, :status => 'done')时实现这一点。但我不能使用最后,因为它可以是视频,图像或其他任何东西

2 个答案:

答案 0 :(得分:3)

我不会使用eval,这个怎么样

<%= link_to('update', self.send("user_#{a.class.name.pluralize}_path", a, , :status => 'done'), :method => :put, :remote => true, :confirm => 'orrly?')  %>

答案 1 :(得分:1)

只有我能想到的解决方案才是这个奇怪的解决方案:

link_to "update", eval("user_#{a.class.name.tableize}_path(#{a.school.id}, #{a.id}, :status => 'done')"), :method => :put, :remote => true, :confirm => 'orrly?'

但这看起来很乱