添加变量以生成动态Ruby语句

时间:2014-12-09 18:54:40

标签: ruby-on-rails ruby

我在Rails ERB模板中创建动态语句时遇到问题。这基本上就是我想要做的事情:

<%= photo.@photo_col.url %>

这将使语句在控制器中基于此条件动态化:

if !params[:cat]
    @my_photos = BusinessPhoto.where(contributor_id: session[:user_id])
    @photo_col = "business_photo"
elsif params[:cat] && params[:cat] == "event"
    @my_photos = EventPhoto.where(contributor_id: session[:user_id])
    @photo_col = "event_photo"
elsif params[:cat] && params[:cat] == "blog"
    @my_photos = BlogPhoto.where(contributor_id: session[:user_id])
    @photo_col = "post_photo"
end

有人能看到这个陈述有问题吗?

1 个答案:

答案 0 :(得分:2)

我不确定photo是什么,所以可能会有一种更直接的方式,但你要做的是动态地通过名称调用方法。您可以使用public_send执行此操作:

<%= photo.public_send(@photo_col).url %>