2017-02-23 41 views
1

Rails新手。要温柔。如果我需要展示更多的东西,我会去做。在滑轨上连接多个产量

试图在我的页脚上插入一个新闻简报注册块在项目上,但没有使其成为布局设置中的一部分。

我有收益率从博客输出索引。

现在它只是在我的本地主机上说“false”。

是否有可能对不同的索引有多个产量?

是否可以将另一个页面插入布局页面?

application.html.erb

<div id="blog"> 
    <%= yield %> 
</div> 
<div> 
<%= content_for?(:newsletter) ? yield(:newsletter) : yield %> 
</div> 
<div> 
<%= render 'layouts/footer' %> 
</div> 

newsletter.html.erb

<% content_for :newsletter do %> 
<h1>Get My Awesome News Letter</h1> 
<p>Give me your email and keep up to date on my cat's thoughts.</p> 
<%= form_tag('/emailapi/subscribe', method: "post", id: "subscribe", remote: "true") do -%> 
    <%= email_field(:email, :address, {id: "email", placeholder: "email address"}) %> 
    <%= submit_tag("Sign me up!") %> 
<% end %> 

emailapi_controller.rb

class EmailapiController < ApplicationController 
def newsletter 
    render params[:newsletter] 
end 

def subscribe 
    gb = Gibbon::Request.new 

    gb.lists.subscribe({ 
     :id => ENV["MAILCHIMP_LIST_ID"], 
     :email => {:email => params[:email][:address]} 
     }) 
end 
end 

的routes.rb

root to: 'posts#index' 

get "/:newsletter" => 'emailapi#newsletter' 
post 'emailapi/subscribe' => 'emailapi#subscribe' 
+0

你不应该需要这个条件测试:'content_for( :通讯)? yield(通讯):yield'try just:'<%= content_for:newsletter%>'基本上为你做了以上的工作:)(注意'<%='很重要)http://apidock.com/rails/ v4.2.1/ActionView/Helpers/CaptureHelper/content_for –

回答

1

你不应该需要这个条件测试:

content_for?(:newsletter) ? yield(:newsletter) : yield 

尝试只:

<%= content_for :newsletter %> 

这里的DOC上content_for

http://apidock.com/rails/v4.2.1/ActionView/Helpers/CaptureHelper/content_for

即只显示时事通讯如果存在。 额外的收益(如果时事通讯内容不存在)重复上面的博客部分。 你可能不应该有重复的纯yield的只有我一个......一切应该有一个名称(如:newsletter

而且 - 你似乎在newsletter.html.erb

+0

没有帮助。对其他收益进行了推荐的调整,但最后我只是放了_footer。 – andywalt

1

失踪的<% end %>你应该能够使用另一个渲染块。我不知道您的newsletter.html.erb的生活,但如果,例如,它住着一个文件夹,例如includes/你可以做这样的事情在:

<%= render 'includes/newsletter' %>