1

クライアントがie7(barf)を使用している場合は、これを別のソーシャルエリアに条件付きで記述しました。2つのソーシャルネットワークがie7(pinterest / google plus)を適切にサポートしなくなったためです。

ユーザーエージェントのチェックアウトをパーシャルから、よりクリーンで人間が読める形式に移動したいと思います。条件をis_this_ie7という名前のメソッドに移動してみましたか?ヘルパーとコントローラーの両方で、両方とも未定義のメソッドブレークを与えています。

RoR開発者の経験が豊富な場合、これはどこに行きますか?前もって感謝します!!!!

      <!-- if ie7 load seperate helper  since gplus dones't support -->
    <%   if  request.env['HTTP_USER_AGENT'] =~ /msie 7.0/i %>
          <%= share_area_for_bidding_ie7   %>
    <%   else %>
        <!-- if any other browser load main share area -->
        <%= share_area_for_bidding  %>
    <%   end %>
4

3 に答える 3

2

通常はヘルパーで、TDDに柔軟に対応したい場合は、文字列とリクエストのメソッドを作成できます。

# ./app/helpers/application_helper.rb

def agent_ie7?(agent)
  agent =~ /msie 7.0/i
end

def request_ie7? 
  agent_ie7?(request.env['HTTP_USER_AGENT'])
end

より強力な答えはそれをモデル化することです:

# ./app/models/browser.rb

class Browser

  def initialize(agent)
    @agent = agent
  end

  def ie7?
    @agent =~ /msie 7.0/i
  end

end

優れた答えは、必要なものを提供する既存のgemを使用することです:https ://github.com/fnando/browser

 gem install browser
 ...
 browser.ie7? 
于 2012-10-01T02:40:09.393 に答える
1

ブラウザがクライアント側をスニッフィングし続けることをお勧めします。しかし、本当にRailsテンプレートでそれを行う必要がある場合は、ヘルパーを作成できます。

_social.html.erb

<% if ie7?(request) %>
  do ie7 stuff
<% else %>
  do other stuff
<% end %>

application_helper.rb

def ie7?(request)
  if request.user_agent
    !!request.user_agent.match(/msie 7.0/i)
  end
end
于 2012-10-01T02:39:30.867 に答える
0

このコードはレイアウトで問題ないと思います。ロジックのほとんどはすでに関数に抽象化されています。レイアウトに含めると、コントローラーからこのレイアウトをレンダリングできます。

これもビューファイルに含まれている場合がありますが、複数のページで必要な場合は、複数のビューファイルに同じコードをコピーする必要があります。または、を使用して必要なページに挿入しますcontent_for

于 2012-10-01T02:38:36.560 に答える