嘿,我对Rails很陌生而且我有点陷入困境所以我在轨道上有这个div,我一遍又一遍地使用它来显示图标。我想写一个函数,因为有大约20个图像和3个不同的状态(非活动/活动/完成)
我的观点
<div class="position6">
<%= link_to "course_6" do %>
<%= image_tag '/icons/course_6_active.png', width: 150, height: 150, alt: ''%>
<%end%>
</div>
控制器
def iconloader(number,state)
<div class="position#{number}">
<%= link_to "course_#{number}" do %>
<%= image_tag '/icons/course_#{number}_#{state}.png', width: 150, height: 150, alt: ''%>
<%end%>
end
我似乎无法弄清楚如何为div编写一个函数。(我知道它应该很容易,但我已经被困了2天了)我有点迷茫。另外我在哪里放功能?在控制器或视图中?
更清楚地重新解释我的问题:在使用rails的视图中,如何使用更少的代码来实现相同的目标?现在有点乱。
答案 0 :(得分:2)
我认为你正在寻找的是一个助手
答案 1 :(得分:2)
首先,如果您想要一个在视图中呈现简单HTML的函数,请使用辅助函数。这些都在app/helpers
中。在application_helper.rb
中放置方法可以在视图中的任何位置调用。
至于在Ruby中呈现HTML,您可以使用以下语法:
在application.rb中:
def iconloader(number, state)
content_tag(:div, class: "position6") do
link_to "course_6" do
image_tag '/icons/course_6_active.png', width: 150, height: 150, alt: ''
end
end
end
然后,只需在视图中调用图标加载器:
<%= iconloader(number, state) %>
另外,我考虑在可能的情况下使用部分代替函数来呈现HTML。在HTML本身而不是Ruby中表达HTML通常更容易,尤其是对于更复杂的HTML。