2016-05-13 8 views
-1

からブロックコンテンツを呼び出すために、私は.rbのファイル内のコードのこの部分を持っている:どのようにHTML

main_content_blocks do 
    5.times.map do |position| 
    { 
     id:      rand(10..100), 
     position:    position, 
     block_type:    'text', 
     text_markdown:   "**This is the Markdown number #{position}**", 
     library_image_id:  nil, 
     library_image_alt_text: nil, 
     library_image_title: nil, 
     library_image_caption: nil, 
    } 
    end 
end 

HTMLから、段落内の例えば、私はmain_content_blocksの異なるオプションを呼び出す必要があります。..例えばID、text_markdownなど... ルビーでHTMLを書くには< %%>?

+0

コントローラのインスタンス変数としてmain_content_blocksを定義している限り、このブロックをHTMLテンプレート内で実行できます。 <%=タグを使用して、必要なものを出力します。 – bkunzi01

+0

こんにちはbkunzi01、あなたの答えに感謝します。私がルビーを初めて知りました。すべてのコントローラとmambo jamboはすでに完了しています。私はHTMLビットが必要です。あなたはここ(例えば)text_markdownをターゲットにして熱くできますか? <%= main_content_blocks.text_markdown%>でしょうか? – Jonathan

+0

どの.rbファイルにどのコードにこのコードが含まれていますか? @ bkunzi01が言っていたように、これを対応するアクション内のコントローラ内のインスタンス変数として持つ必要があります。例えば、 '@main_content_blocks = main_content_blocks do ...' - あなたは実際にmain_content_blocksルビコードを出力しようとしましたか? 'undefined variable main_content_blocks'で始まるルビコードにいくつかのエラーがあります。 – Anand

答えて

0

bkunzi01の応答についてもう少し詳しく説明する - コントローラで作成した後、ビューのmain_content_blocks変数にアクセスするには、必要な変数の先頭に@を追加するだけで、インスタンス変数になります。例えば、あなたのExampleController#indexルートを叩いている場合です。

controllers/example_controller.rb

(htmlとERBを使用して)ビューで、その後
class ExampleController < ApplicationController 
    def index 
    @view_data = 
     main_content_blocks do 
     5.times.map do |position| 
      { 
      id:      rand(10..100), 
      position:    position, 
      block_type:    'text', 
      text_markdown:   "**This is the Markdown number #{position}**", 
      library_image_id:  nil, 
      library_image_alt_text: nil, 
      library_image_title: nil, 
      library_image_caption: nil, 
      } 
      end 
     end 
    end 
end 

views/example/index.html.erb

<div> 
    <% @view_data.each do |data| %> 
     <h1><%= data[:id] %></h1> 
    <% end %> 
</div> 

次のようないくつかのことをレンダリングします:

<div> 
    <h1>1</h1> 
    <h1>2</h1> 
    <h1>3</h1> 
    <h1>4</h1> 
    <h1>5</h1> 
</div> 
+0

Railsはあなたのルートが' ExampleController#index'に行く時を知るのに十分にスマートです。レンダリングが必要なビューは 'views/example/index .html'を明示的に伝える必要はありません。コントローラメソッドで設定されたインスタンス変数は、対応するビューでerb構文を使用して使用できます。<%@something%>は何も表示しませんが、評価します。 <%= @something%>は変数の値を表示します –

関連する問題