2014-09-01 2 views
0

Я пытаюсь создать метод в ruby ​​для обработки кавычек из моих тонких сообщений в блогах. Прямо сейчас, у меня есть следующий вид помощника:посредник blockquote ruby ​​function

def blockquote(content,author,source=nil,source_link=nil) 
    data = ' 
     <blockquote> 
     <p>'+content.html_safe+'</p> 
     <footer> 
     <strong>'+author+'</strong>' 

    if source && source_link 
     data = data + ' 
     <cite> 
      <a href="'+source_link+'">'+source+'</a> 
     </cite> 
     ' 
    end 

    data = data + '</footer></blockquote>' 
    return data 
    end 

, который работает на должности как ..

= blockquote("When you grow up you tend to get told that the world is the way it is and you're life is just to live your life inside the world. Try not to bash into the walls too much. Try to have a nice family life, have fun, save a little money. That's a very limited life. Life can be much broader once you discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you. And you can change it, you can influence it… Once you learn that, you'll never be the same again.","Steve Jobs, Apple Computers") 

однако, будет ли лучше? Я хочу, чтобы обернуть текст что-то вроде

- blockquote 
    When you grow up you tend to get told that the world is the way it is and you're life is just to live your life inside the world. Try not to bash into the walls too much. Try to have a nice family life, have fun, save a little money. That's a very limited life. Life can be much broader once you discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you. And you can change it, you can influence it… Once you learn that, you'll never be the same again. 

но мне нужен способ передать в автора и источник вариант + ссылка на источник.

Текущий метод также требует, чтобы цитата была на одной строке, а не на нескольких строках. Мысли?

ответ

2

Я бы создал частичный, а не кодирование html, как метод, который вы сделали. Тогда просто сделать что-то вроде этого:

def blockquote(options={}) 
    ... #checks and business logic 
    render partial: 'quote_template', options 
    end 

И вы можете инициализировать его люблю:

blockquote({ 
    author: "Steve Jobs", 
    quote: "Some awesome quote...", 
    ... 
    }) 

_quote_template.html.erb парциальное может выглядеть примерно так:

<blockquote> 
    <p><%= options[:quote] %></p> 

    <footer> 
    <strong><%= options[:author] %></strong> 

    <% if options[:source] %> 
     <cite> 
     <a href="<%= options[:source_link] %>"><%= options[:source] %></a> 
     </cite> 
    <% end %> 
    </footer> 
</blockquote> 
+0

Дa, что это именно то, что я искал, спасибо! –

+0

Я получаю эту ошибку: == Миддман загружается /Users/chrishough/BusinessNoConformity/CodeNoConformity/Blog/config.rb::in 'require ':/Пользователи/chrishough/BusinessNoConformity/CodeNoConformity/Блог/lib/helpers/view_helpers.rb: 23: синтаксическая ошибка, неожиданное '\ n', expecting => (SyntaxError) –

+0

Просто спросите, как новый вопрос, если вам все еще нужна помощь :) – fyz

2

Я создал следующий тонкий шаблон в мой неполный каталог:

blockquote 
    p 
    = locals[:quote] 

    footer> 
    strong 
     = locals[:author] 

    - if locals[:source] 
     cite 
     a[href="#{locals[:source_link]}"] 
      = locals[:source] 

, который может быть вызван через посреднические частичные как:

= partial "components/blockquote", locals: {\ 
    author: "Steve Jobs, Apple Computers",\ 
    quote: "When you grow up you tend to get told that the world is the way it is and you're life is just to live your life inside the world. Try not to bash into the walls too much. Try to have a nice family life, have fun, save a little money. That's a very limited life. Life can be much broader once you discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you. And you can change it, you can influence it… Once you learn that, you'll never be the same again."} 
+0

Спасибо за обмен. Не забудьте принять ответ и ответить на ответ другого парня. –

+0

именно то, что я искал! изо всех сил старался сделать частичный огонь от посреднического метода помощника, и он просто не сделал бы этого. – reid