将类添加到辅助方法调用

时间:2015-04-21 13:31:46

标签: ruby-on-rails ruby

所以我有一个帮助方法,我试图将css应用于不将它放在div或任何其他元素中。我如何在rails中将css类应用于这个帮助器?

我试过了:

<%= first_letter_content(e.content), :class => "first-letter" %>

<%= (first_letter_content(e.content), :class => "first-letter") %>

两者都导致syntax error, unexpected ',', expecting ')'

帮助程序代码:

def first_letter_content(content) 
  first_letter = content[0] 
  return first_letter 
end

有什么建议吗?我一直试图找到合适的语法,但没有运气。

2 个答案:

答案 0 :(得分:1)

您的帮助程序不支持选项(额外的args),但您尝试为该元素提供HTML类。

您应该将first_letter_content的内容包含在div / span中(取决于您想要的内容,阻止或内联)并在此HTML元素上应用该类:

<div class='first-letter'>
  <%= first_letter_content(e.content) %>
</div>

或者您可以直接将content[0]包裹在帮助器方法中的div内:

def first_letter_content(content, options = {}) 
  content_tag(:div, content[0], options)
end

并像这样使用它:

first_letter_content(content, class: 'first-letter')
first_letter_content(content, class: 'first-letter', id: 'something')
first_letter_content(content)

此外,您可以将辅助方法重构为:

def first_letter_content(content) 
  content[0]
end

这是一个小小的改进,但在Ruby中,最后一件事&#34;方法中使用的方法将由此方法返回。

示例:

def something
  a = 2
  b = 3
  a
end
# => returns `2`

def something_else
  a = 2
  b = 3
end
# => returns `3`

def whatever
  a = 12
  nil
end
# => returns `nil`

答案 1 :(得分:0)

  

我正在尝试将css应用于不将其放入div或任何其他元素

Css类适用于DOM元素,因此您应将此内容包装到某个元素/节点中。

例如:

def first_letter_content(content, css_class) 
  content_tag(:div, content[0], class: css_class)
end

呼叫:

<%= first_letter_content(e.content, "first-letter") %>