2017-02-23 2 views
1

레일 초보자. 부드럽게 다루십시오. 더 많은 것을 보여줄 필요가 있다면 해보 겠어.여러 개의 수율을 레일에 연결

프로젝트의 내 바닥 글 위에 뉴스 레터 가입 블록을 삽입하려고했으나 설정 한 레이아웃에서 일부만 만들지 않았습니다.

블로그에서 색인을 출력하는 수확량이 있습니다.

지금 당장 로컬 호스트에서 "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 (: newsletter) : 기본적으로 위 내용을 수행하는''just try :'<% = 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 %> 

이 문서의 content_for에 :

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

즉 만 표시를 뉴스 레터가있는 경우 뉴스 레터. 위의 블로그 섹션에서 추가 수익률 (뉴스 레터 콘텐츠가없는 경우)이 반복됩니다. 당신이 newsletter.html.erb

+0

도움을받지 못했습니다. 다른 수율에 대한 권장 조정을했지만 결국에는 _footer를 넣었습니다. – andywalt

1

<% end %> 누락 것으로 보인다 - 당신은 아마 다른 모든 또한 (예를 들어 :newsletter)

을 이름이 있어야합니다 ... 그냥 하나를 중복 일반 yield들 필요는 없습니다 다른 렌더링 블록을 사용할 수 있어야합니다. 나는 확실하지 않다 어디 newsletter.html.erb의 삶,하지만 당신은 같은 것을 할 수있는 등 includes/ 같은 폴더에 살고 예를 들어, : (`content_for : 당신이이 조건 테스트를 필요가 없습니다

<%= render 'includes/newsletter' %>

관련 문제