2017-02-23 40 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' %>