21856


Ruby on Rails4.2を使っています。

なにかの一覧ページで、1件もデータがない場合は「データがありません」という表示にし、データがあればTableを表示させています。コード的には普通に
articles.size を見て条件分岐させています。

[code]

    - if articles.size == 0
      | 1件も登録されていません
    - else
      table
        tr
          articles.each do |article|
            td = article.title
    
[/code]

シンプルなHTMLであれば、これで見難いということはないのですが、もう少し大きくなると、見難くなるような気がしています。これを解消する良い方法はないのでしょうか？


CC BY-SA 3.0
2016-02-08T10:32:22.933
21853
2016-02-13T06:13:02.283
14330
question
ruby-on-rails
RailsのViewで条件分岐を見やすくする方法はありますか？


partialを使うと解決出来ると思います。  
サンプルコード

[code]

    # app/views/hoges/show.html.haml
    - if articles.size.zero?
      1件も登録されていません
    - else
      render 'table'
    
    # app/views/hoges/_table.html.haml
    %table
      %tr
        articles.each do |article|
          %td= article.title
    
[/code]

ファイル名に関しては適切な名前に置き換えて下さい。


CC BY-SA 3.0
2016-02-08T10:59:48.063
21856
2016-02-08T10:59:48.063
7373
21853
answer


渡しの場合、特に複雑なviewの条件分岐ではhelperと組み合わせることが多いです。

[code]

    # app/helpers/article_helper.rb
    def render_article_table(articles)
      if articles.empty?
        "1件も登録されていません"
      elsif articles.present?
        render partial: 'table', locals: { articles: articles }
      else
        render partial: 'hoge', locals: { fuga: fuga }
      end
    end
    
    # article.html.slim
    
    = render_article_table(articles)
    
[/code]


CC BY-SA 3.0
2016-02-13T06:13:02.283
22034
2016-02-13T06:13:02.283
14387
21853
answer