我在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
有人能看到这个陈述有问题吗?
答案 0 :(得分:2)
我不确定photo
是什么,所以可能会有一种更直接的方式,但你要做的是动态地通过名称调用方法。您可以使用public_send
执行此操作:
<%= photo.public_send(@photo_col).url %>