我在erb(電子郵件模板)中顯示重複的內容塊,我想我會創建一個代表每個塊的簡單類。在erb模板中創建簡單的類
我試過這樣的工程,如果我手動渲染erb,但如果我嘗試發送我扔的電子郵件。
<%
class EmailBox
attr_accessor :text, :textLink,
end
x = EmailBox.new
x.textLink = 'https://www.google.com/'
x.text = 'blah'
@boxes = []
@boxes.push x
%>
<% @boxes.each do |row| %>
<a style="text-decoration:none;color:#666;" href="<%=row.textLink%>"><%=row.text%></a>
<% end %>
我得到的錯誤是:
/Users/x/appname/app/views/clip_mailer/send_clip_with_destination.html.erb:205: class definition in method body
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_view/template.rb:297:in `module_eval'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_view/template.rb:297:in `compile'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_view/template.rb:244:in `block in compile!'
<internal:prelude>:10:in `synchronize'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_view/template.rb:232:in `compile!'
我重複自己,但這個時候我手動呈現模板打開它在磁盤上運行ERB.new(file).result(binding)
爲什麼不把類聲明放入模型中並將所有填充內容填入控制器? –
我只是一次使用這個簡單的類來構建電子郵件的正文。這與其他任何事都沒有關係。我也沒有循環數據庫記錄或任何東西,我手動建立這些重複塊。 – portforwardpodcast
將類放入模型並不意味着您使用數據庫,它可能只是類(模型)。這和控制器中的邏輯是一個慣例,這很重要。 :) –