0

私はこのコードで私のアプリにヘルパーを持っています:

module ApplicationHelper
  def cms(key)
    if Text.find_by_key(key)
      Text.find_by_key(key).content
    else
      nil
    end
  end

  def cms2(key)
    if Text.find_by_key(key)
      Text.find_by_key(key)
    else
      nil
    end
  end
end

そして私のビューファイルにはこれがあります:

<%if cms('front2')==nil%>
    <%if admin_signed_in?%>
        <%=link_to "create", new_text_path(:key => 'front2')%>
    <%end%>
<%else%>
    <%=raw(cms('front2'))%>
    <%if admin_signed_in?%>
        <%=link_to("Edit", edit_text_path(cms2('front2')), :class=>"editcms")%>
    <%end%>     
<%end%> 

このコードの html 部分を抽出して、次のようなヘルパーを呼び出せるようにします。

<%= new_method('front2') %>
4

1 に答える 1

1
# app/helpers/application_helper.rb
include ActionView::Helpers::UrlHelper 
module ApplicationHelper
  def cms(key, admin_signed_in)
    if key.nil?
        if admin_signed_in
            if Text.find_by_key(key)
              link_to 'create', new_text_path(:key => key)
            else
              nil
            end
        end
    else
        text = Text.find_by_key(key).content
        if admin_signed_in
            "#{text} #{link_to('Edit', edit_text_path(cms2(key)), :class => 'editcms')}".html_safe
        else
            text
        end
    end
  end
end

# in your view
<%= cms('front_2') %>
于 2013-09-09T18:54:57.400 に答える