2017-02-23 24 views
1

Rails Newbie。穏やかな。より多くのものを見せる必要があるなら、私はそれをやるでしょう。複数の出力をレールに接続

ニュースレターの購読ブロックをプロジェクトのフッターの上に挿入しようとしましたが、レイアウトに部分的に表示されませんでした。

私は、ブログからインデックスを出力しています。

現時点では、ローカルホストで「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

をあなたはこの条件テストを必要はありません:ニュースレター)? yield :(ニュースレター):基本的にあなたのために行う、試してみましょう。( '<%='事項に注意してください)http://apidock.com/rails/ v4.2.1/ActionView/Helpers/CaptureHelper/content_for –

答えて

1

あなたはこの条件テストを必要としないでください。

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

はただ試してみてください。

<%= content_for :newsletter %> 

ここcontent_for上のドキュメントです:

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

Ieはのみが表示しますニュースレターがある場合はニュースレター。 上記のブログのセクションから余分な利回り(ニュースレターのコンテンツがない場合)が繰り返されます。あなたはnewsletter.html.erb

+0

役に立たなかった他の利回りを調整することを推奨しましたが、結局、私はちょうど_footerを入れました。 – andywalt

1

<% end %>が欠落しているようだ - あなたは、おそらく他のすべてはまた、名前(例えば:newsletter

を持っている必要があります...ちょうど1平野yield Sを複製してはなりません別のレンダリングブロックを使用するだけで済みます。私はどこnewsletter.html.erb生活わからないんだけど、例えば、それはフォルダに住んでいた、あればあなたが何か行うことができ、このようなincludes/よう:? `content_for(:

<%= render 'includes/newsletter' %>

関連する問題