【问题标题】:Convert View block to helper method将 View 块转换为辅助方法
【发布时间】:2014-02-05 02:40:03
【问题描述】:

目前我的视图中有一个 Each/do 块,但我更愿意将此代码推送到帮助程序中,因为我需要在其中添加一些条件语句,所以我不想弄乱我的视图.这是我目前的观点,我一直在尝试将代码编写为辅助方法,但到目前为止没有运气

<% update.voters_who_voted.each do |voter| %>
  <%= link_to profile_path(voter) do %>
    <%= thirty_avatar(voter) %>
  <% end %>
<% end %>

这将如何转化为具有此名称的助手

def find_voters_who_voted(update)
  ...
  ...
end

我试过这个没有运气

def find_voters_who_voted(update)
  update.voters_who_voted.each do |voter|
    link_to profile_path(voter) do
      thirty_avatar(voter)
    end
  end
end

【问题讨论】:

  • 发生了什么,你有错误吗?
  • 没有错误,但看起来好像我检查了用户(它显示了他们的所有属性),就像我做了这个号码voter.inspect
  • 是三十个辅助方法吗?也许你需要通过 voter.name_of_avatar_attribute_name。东西链接thirty_avatar(voter.image)
  • 是的,它是显示用户头像或默认头像是用户没有头像的辅助方法
  • 感谢您的帮助@hernanvicente!

标签: ruby-on-rails ruby-on-rails-4 helper


【解决方案1】:

请记住,您所做的只是显示此方法的返回值。看起来您希望它表现得好像它是视图的一部分,但这不是助手的工作方式。像这样的东西会返回你原来的代码块的等价物

def find_voters_who_voted(update)
  update.voters_who_voted.collect do |voter|
    link_to profile_path(voter) do
      thirty_avatar(voter)
    end
  end.join
end

【讨论】:

  • 你是对的。这让我更接近,但仍然在输出周围加上引号,将其呈现为文本无代码
  • .html_safe 添加到.join 使其工作...谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多