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 回答