我想根据资产mime-types呈现资产标签助手,使用send
来强制转换该文件类型:
<% if @cloud_file.filetype.match(/^(audio|image|video)$/) %>
<%= send("#{@cloud_file.filetype}_tag") @cloud_file.url %>
<% end %>
可悲的是,使用这种方法Rails似乎不行,并返回语法错误!任何人都知道这个代码有什么问题或者如何根据资产类型构建标记助手?
答案 0 :(得分:0)
我会帮助你处理这个逻辑,比如:
def build_tag(file)
case file.filetype
when 'audio'
content_tag(:div ...)
when 'image'
content_tag(:img ...)
when 'audio'
content_tag(:div, class: audio ...)
end
end
然后在您的视图中调用
<% if @cloud_file.filetype.match(/^(audio|image|video)$/) %>
<%= build_tag(@cloud_file) %>
<% end %>
您甚至可以稍微清理一下并添加一种方法来检查@cloud_file
类的文件类型:
def is_embeddable?
filetype.match(/^(audio|image|video)$/)
end
所以你的最终代码如下:
<% if @cloud_file.is_embeddable? %>
<%= build_tag(@cloud_file) %>
<% end %>