Ruby on rails 在Rails的帮助程序中渲染fa_图标的正确方法

Ruby on rails 在Rails的帮助程序中渲染fa_图标的正确方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个Rails 4.2应用程序,它有一个分级系统。我想将演示者逻辑移到助手中。我想显示一颗星或半颗星,这取决于排名是否完整 module ThingHelper def calculate_stars(thing) output = "" total = thing.overall_average thing.overall_average.ceil.times do |n| if total >= 1 output += c

我有一个Rails 4.2应用程序,它有一个分级系统。我想将演示者逻辑移到助手中。我想显示一颗星或半颗星,这取决于排名是否完整

module ThingHelper
  def calculate_stars(thing)
    output = ""
    total = thing.overall_average

    thing.overall_average.ceil.times do |n| 
      if total >= 1
        output += content_tag(:i, "<%= fa_icon 'star' %>")
        total -= 1
      else  
        output += content_tag(:i, "<%= fa_icon 'star-half' %>")
      end
    end   
    return output
  end
end
模块ThingHelper
def计算_星(东西)
output=“”
总计=总平均值
总平均每一次都是这样
如果总数>=1
输出+=内容\标记(:i,“”)
总数-=1
其他的
输出+=内容\标记(:i,“”)
结束
结束
返回输出
结束
结束
在我的erb模板中,我有以下内容:

<%= calculate_stars(thing).html_safe %>

但是,它只是列出如下字符串:“”。我尝试过使用
raw
以及使用
concat
而不是
+=
,但两种尝试的解决方案都只是呈现一个字符串

我也尝试过不使用
content\u标记
helper,但这不起作用

我曾征询以下意见: 和

我错过了什么?谢谢

编辑


我不相信这可以在helper中完成,所以我只能将逻辑放在视图中。基本上,我取整并计算满星的数量,然后有一个条件在取整的基础上再加一个

您犯的两个错误非常小

首先,是在您给内容标签的参数中。在第一个例子中

content_tag(:p, "Hello world!")
 # => <p>Hello world!</p>

我知道你在做其他事情来繁星等等。我想你可以从这里开始…

你犯了两个非常小的错误

首先,是在您给内容标签的参数中。在第一个例子中

content_tag(:p, "Hello world!")
 # => <p>Hello world!</p>

我知道你在做其他事情来繁星等等。我想你可以从这里开始…

你犯了两个非常小的错误

首先,是在您给内容标签的参数中。在第一个例子中

content_tag(:p, "Hello world!")
 # => <p>Hello world!</p>

我知道你在做其他事情来繁星等等。我想你可以从这里开始…

你犯了两个非常小的错误

首先,是在您给内容标签的参数中。在第一个例子中

content_tag(:p, "Hello world!")
 # => <p>Hello world!</p>

我知道你在做其他事情来繁星等等。我想您可以从这里获取它…

您不需要为输出声明字符串

module ThingHelper
  def calculate_stars(thing)
    total = thing.overall_average

    thing.overall_average.ceil.times do |n| 
      if total >= 1
        content_tag(:i, :class => "fa fa-list") do
        end
        total -= 1
      else  
        content_tag(:i, :class => "fa fa-list") do
        end
      end
    end   
  end
end
然后在erb上渲染:

<%= calculate_stars(thing) %>

请注意,我正在使用引导图标和字形图标作为我的图标。只需更改图标类

我在我的开发中尝试了这一点,并制作了以下产品:


您不需要为输出声明字符串

module ThingHelper
  def calculate_stars(thing)
    total = thing.overall_average

    thing.overall_average.ceil.times do |n| 
      if total >= 1
        content_tag(:i, :class => "fa fa-list") do
        end
        total -= 1
      else  
        content_tag(:i, :class => "fa fa-list") do
        end
      end
    end   
  end
end
然后在erb上渲染:

<%= calculate_stars(thing) %>

请注意,我正在使用引导图标和字形图标作为我的图标。只需更改图标类

我在我的开发中尝试了这一点,并制作了以下产品:


您不需要为输出声明字符串

module ThingHelper
  def calculate_stars(thing)
    total = thing.overall_average

    thing.overall_average.ceil.times do |n| 
      if total >= 1
        content_tag(:i, :class => "fa fa-list") do
        end
        total -= 1
      else  
        content_tag(:i, :class => "fa fa-list") do
        end
      end
    end   
  end
end
然后在erb上渲染:

<%= calculate_stars(thing) %>

请注意,我正在使用引导图标和字形图标作为我的图标。只需更改图标类

我在我的开发中尝试了这一点,并制作了以下产品:


您不需要为输出声明字符串

module ThingHelper
  def calculate_stars(thing)
    total = thing.overall_average

    thing.overall_average.ceil.times do |n| 
      if total >= 1
        content_tag(:i, :class => "fa fa-list") do
        end
        total -= 1
      else  
        content_tag(:i, :class => "fa fa-list") do
        end
      end
    end   
  end
end
然后在erb上渲染:

<%= calculate_stars(thing) %>

请注意,我正在使用引导图标和字形图标作为我的图标。只需更改图标类

我在我的开发中尝试了这一点,并制作了以下产品:


谢谢。这起作用了。您指出的问题是我传递给
content\u tag
的参数。谢谢。这起作用了。您指出的问题是我传递给
content\u tag
的参数。谢谢。这起作用了。您指出的问题是我传递给
content\u tag
的参数。谢谢。这起作用了。您指出的问题是我传递给
content\u tag
的参数。