2011-07-01 3 views
0
<li<% if @flits.first == flit %> class="first" <% end %>> 

Iがレール3にapplication.css#flits_list#flits_list :hoverのCSSを作成したが、私は(flits_list.first)リストの最初のflitを希望異なるCSSを持っているので、私は、クラスを作成し、このコードは、エラーこの特定のコード行は、Rails 2.x.xでは動作しますが、3.x.xでは動作しません。誰かが "翻訳"するのを助けてくれますか?

を返します

家庭#インデックスに方法エラーはありません。あなたはそれを期待していなかったときに無限のオブジェクトを持っています!あなたは配列のインスタンスを予期していたかもしれません。 nil.firstを評価中にエラーが発生しました

ご協力いただけると助かります。

+0

たちは@flitsがされているコントローラのコードを必要とするかもしれないと思います@flitsがnilであることをエラーが示すので、これに答えるために作成されました – chrispanda

+0

home_controller.rbと言う:before_filter:login_required def ind例:@flits = current_user.all_flits end end – Colbern

+0

- これは、current_user.all_flitsがnilを返すことを示唆しています。 – chrispanda

答えて

0

@flitsはnilです。おそらく、all_flitsメソッドがnilを返すためです。

しかし、そのようなタグを分割して、そのロジックをビューに入れないことをお勧めします。


オプション1:そうのようなCSSの擬似クラスfirst-childを使用します。

li:first-child { 
    ... 
} 

これは、任意のバックエンドのロジックや特殊を必要としないという利点を持っているあなたはそれをきれいにするいくつかのオプションを持っていますマークアップ。唯一の欠点は、それが古い古いブラウザサポートがないことです。 IE6。


オプション2:Railsタグヘルパーを使用します。

<%= content_tag :li, :class => @flits.first==flit?"first":"" %> 

オプション3:ヘルパーに続いてヘルパーメソッドに離れ

<%= li_for_flit %> 

それをタック:

def li_for_flit 
    #spit out your tag here 
end 
関連する問題