2011-12-05 23 views
0

取得私は、次のエラーを取得しています:は、引数の例外ArgumentError間違った数(1 0)

class StatesController < ApplicationController 
    def filter(my_string) 

     @new_array = [] 
     @new_array = state.each {|x| if /#my_string/i =~ x then puts x end} 
     return @new_array 

    end 

end 

そして、私のビュールックス:

ArgumentError in StatesController#filter 

wrong number of arguments (0 for 1) 

私のコントローラは、このようになりますこのように:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <title>States</title> 
    </head> 

    <body> 

     <% States.filter(params[:substring]) %> 
     <p><%= @new_array.each %></p> 
     <% if @new_array.size = 0 %> 
     <p>No matches!</p> 

    </body> 

</html> 

私のコードに間違いがありますか?

おかげでそんなに

答えて

3

あなたはStatesControllerで持っているフィルタ法は、アクションです。そのようなアクションはパラメータを受け入れません。あなたがしようとしていることを達成するより良い方法は、Stateというモデルを作成することです。そして、それに対してフィルタメソッドを追加します。

# app/models/state.rb 
class State 
    def filter(params[:my_string]) 
    @new_array = [] 
    @new_array = state.each {|x| if /#my_string/i =~ x then puts x end} 
    return @new_array 
    end 
end 

をお使いのコントローラでは、あなたが今、次のようなものを持っている必要があります。

class StatesController < ApplicationController 
    def filter 
    @states = State.filter(params[:sub_string]) 
    end 
end 

その後、対応するビューで:

<% if @states.empty? %> 
    <p>No matches!</p> 
<% else %> 
    <p> 
    <% @states.each do |state| %> 
     <%= state %> 
    <% end %> 
    </p> 
<% end %> 

これは何をdoesはモデルを使用して配列をインスタンス変数にロードします。このインスタンス変数(@で始まる)は、コントローラアクションでレンダリングされるビューからアクセス可能です。使用しているアクションはフィルターとして指定されています。

空白を使用して配列に結果があるかどうかを確認します。方法。さもなければ、私は配列をループするだけです。

これは、ヘッダーにparams [:sub_string]がある場合にのみ機能します。したがって、あなたはURLに?sub_string=mystringのようなものがあることを確認する必要があります。

あなたの質問とコードレイアウトを考えれば、あなたはかなり新しいレールだと思うでしょう。 http://guides.rubyonrails.org/getting_started.html

+0

あなたの非常に明確で理解しやすい答えをいただき、ありがとうございました。リンクに感謝します!! – user1043856

+0

問題ありません。 Railsを学ぶためには、いくつかの良い本があります。私は自分でそれを読んだことはありませんが、私の友人たちは新しい人にとって本当に "The Rails 3 way"を勧めています。 – agmcleod

+0

別の質問今 - 私はそれをテストしようとしたとき、私は次のエラーがある:あなたはそれを期待していないときにあなたは無しのオブジェクトがあります! Arrayのインスタンスが想定されている可能性があります。 nil.emptyの評価中にエラーが発生しましたか? どうしてアレイにアクセスできないのですか? – user1043856

関連する問題