2016-08-07 9 views
0

Rails 5 ERBの構造化レイアウトは、データ用のjsonファイルを介してローカルとして渡される各データに対して部分的にレンダリングされますが、それぞれ1つまたは2つのボタンその中に対応するリンクがあるので、それに対応する各リンクのボタンのタイトルも変更したいと思います。私はすでに実装していますが、ビュー内のすべてのロジックを置くことは魅力的ではないと感じています。これは、jsonファイル内の各リンクの特定のボタンを表示するヘルパーに入れる方法です。対応するボタンを表示し、そのリンクをレールに表示

私は基本的にこの

Wireframe

data.json

[{ 
    "github": "https://github.com/", 
    "heroku": "https://heroku.com/", 
    "button": [{"github": "github", "heroku": "heroku", "codepen": "codepen", "behance": "behance"}] 
}, 
{ 
    "github": "https://github.com/", 
    "heroku": "https://heroku.com/", 
    "button": [{"github": "github", "heroku": "heroku", "codepen": "codepen", "behance": "behance"}] 
}, 
{ 
    "codepen": "https://codepen.com/", 
    "button": [{"github": "github", "heroku": "heroku", "codepen": "codepen", "behance": "behance"}] 
}, 
{ 
    "codepen": "https://behance.com", 
    "button": [{"github": "github", "heroku": "heroku", "codepen": "codepen", "behance": "behance"}] 
}] 


application_helper.rb

を実現したいですあなたのヘルパーに210​​


index.html.erbコントローラ/テンプレート

<%= portfolio_section('Portfolio') do %> 
    <!-- nested partials --> 
    <!-- Send data from our json file and pass in local variable for it to be interpolated --> 
    <% @data.each do |data| %> 
     <%= render(:partial => 'editable-sections/panels/panel', :locals => {:data => data})%> 
    <% end %> 
<% end %> 

_panel.html.erb /部分

<!-- _panel.html.erb --> 
    <div class="btn-position"> 
    <% if data["github"] && ["heroku"].present?%> 
     <a href="<%= data["github"] %>" target="_blank" class="btn btn-sharp"> 
      <%= data["button"][0]["github"]%> 
     </a> 
     <a href="<%= data["heroku"] %>" target="_blank" class="btn btn-sharp"> 
     <%=data["button"][0]["heroku"] %> 
     </a> 
     <% elsif data["codepen"].present?%> 
     <a href="<%= data["codepen"] %>" target="_blank" class="btn btn-sharp"> 
      <%= data["button"][0]["codepen"]%> 
     </a> 
     <% elsif data["behance"].present?%> 
     <a href="<%= data["behance"] %>" target="_blank" class="btn btn-sharp"> 
      <%= data["button"][0]["behance"]%> 
     </a> 
    <% end %> 
    </div> 

答えて

0

エキスログインtを渡してレンダリングする彼はヘルパーメソッドです。次のような最初の条件を抽出することができます。

def make github_link data 
    link_to(data["github"] , data["button"][0]["github"] , class: "btn btn-sharp", target: '_blank') if data["github"] && ["heroku"].present? 
end 

このメソッドを部分的に使用します。それは景色をきれいにするはずです。あなたがさらに行きたい場合は、デコレータhttps://github.com/drapergem/draperを使うことができます。タイトルについては、パラメータをヘルパーに渡して好きなものを変更することができます。ヘルパーはより動的にすることもできます。

+0

私はそれを試して、少し構成を作って、それは動作します、私もチェックアウトドレープかもしれません。 –

+0

あなたに素晴らしい答えを受け入れることができますか? –

関連する問題