高度相关的问题,可以帮助我重构和简化我的代码。
第一
我的观点以<% provide(:title, 'My Title') %>
但是在视图的其余部分,在标题或段落中或者没有,“我的标题”重复了很多......有没有办法我可以再次调用它?我尝试过,例如:<h4>:title</h4>
无效。
第二
同样在同一视图中,我再说一遍,如果您有兴趣,请与我(带链接)联系。我想用某种符号代替这句话。
最初,我曾考虑使用像这样的全局变量
<p>Yada dada beginning text. <%= @@contactme %> </p>
然后在控制器中显示它(顺便说一句,因为它是全局的,因为多个方法引用相同的视图,它实际上是部分的),但问题是我甚至不确定是否可以声明一个全局变量使用HTML和路由就像这样。
class Controller do
@@contactme = "If you're interested, please <a href='<%= new_contact_path %>'>please contact me</a>".html_safe
end
即使有可能,它也不适合我。在变量甚至有机会渲染之前我得到:uninitialized class variable @@contactme in ActionView::CompiledTemplates
谢谢!
答案 0 :(得分:0)
对于第一个,像拉胡尔说的那样,使用yeild。
对于第二种,我不确定在控制器中生成视图是一种很好的行为,并且在这种情况下,您还将面临多层erb渲染(&lt;%tag with another&lt;%tag)(我不是确定它是否有效)
试试这个:
class Controller do
@contactme = "If you're interested, #{link_to 'please contact me', new_contact_path}"
end
编辑:
new_contact_path
只能在视图中使用,而不能在控制器中使用。请尝试使用部分内容。
使用以下内容创建app / views / shared / _contactme.html.erb:
If you're interested, <%= link_to 'please contact me', new_contact_path %>
然后在您的原始观点中
<p>Yada dada beginning text. <%= render 'shared/contactme' %></p>
答案 1 :(得分:0)
<强>首先强>
application.html.erb
<%= content_for :title %>
posts / index.html.erb#例如
<% content_for :title do %>
Awesome title
<% end %>
此处提供更多信息:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for
<强>第二强>
class Post
CONTACTME = "If you're interested, please <a href='/contacts/new'>please contact me</a>".html_safe
end
application.html.erb
<%= Post::CONTACTME %>