Ruby on rails 用户图片的Rails助手
我目前在一个部分中有一些脏代码,我想把它移到一个助手那里会很好,但无法实现 以下是迄今为止我在“用户图片”部分的内容:Ruby on rails 用户图片的Rails助手,ruby-on-rails,helpers,Ruby On Rails,Helpers,我目前在一个部分中有一些脏代码,我想把它移到一个助手那里会很好,但无法实现 以下是迄今为止我在“用户图片”部分的内容: <% if defined?(user) %> <%- if user.picture_id == 0 -%> <%= image_tag('/images/einstein.png', :size => size) -%> <%- else -%> <%= image
<% if defined?(user) %>
<%- if user.picture_id == 0 -%>
<%= image_tag('/images/einstein.png', :size => size) -%>
<%- else -%>
<%= image_tag(user.picture.public_filename(:avatar), :size => size) %>
<%- end -%>
<% else %>
<%- if !logged_in_user || logged_in_user.picture_id == 0 -%>
<%= image_tag('/images/einstein.png', :size => size) -%>
<%- else -%>
<%= image_tag(logged_in_user.picture.public_filename(:avatar), :size => size) %>
<%- end -%>
<% end %>
大小)->
尺寸)%%>
大小)->
尺寸)%%>
我如何让它成为助手
谢谢 将代码删除到
app/helpers/application\u helper.rb
def my_helper(user, size)
if defined?(user)
if user.picture_id == 0
image_tag('/images/einstein.png', :size => size)
else
image_tag(user.picture.public_filename(:avatar), :size => size)
end
else
if !logged_in_user || logged_in_user.picture_id == 0
image_tag('/images/einstein.png', :size => size)
else
image_tag(logged_in_user.picture.public_filename(:avatar), :size => size) %>
end
end
end
然后从您的视图中调用:
my\u helper(当前用户,大小)
在我的头顶上,助手可以是:
def picture_for(user) #If you need to, pass size as a parameter or..
if user.nil? or user.picture.nil?
image_tag('/images/einstein.png', :size => size) # ..you need to define size somewhere in this helper
else
image_tag user.picture.public_filename(:avatar), :size => size
end
end
您可以在部分中执行类似的操作:
if defined?(user)
picture_for(user)
elsif logged_in_user
picture_for(logged_in_user)
else
picture_for(nil)
end
我假设您事先知道大小,但您也可以轻松地将其传递给助手
def user_picture_tag(user)
return image_tag(user.picture.public_filename(:avatar), :size => "50x50") if user.present? && user.picture_id != 0
image_tag('/images/einstein.png', :size => "50x50")
end
这样使用:(如果logged\u-in\u-user
为nil,则可以)
user_picture_tag(logged_in_user)
# OR
user_picture_tag(@user)