私は、レール2.3.5のアプリケーションを実行し、コントローラ#showのNil:Nilclassを取得しています。Rails 2.3.5 nilに対して未定義のメソッドto_symを取得する:NilClass
これは私のshowアクション
def show
@category = Category.find_by_url_name(params[:id])
@brands = @category.brands
@categories = Category.find(:all)
@meta_title = "#{@category.name}"
respond_to do |format|
format.html
@brand = @brands.first
@search = Product.search.order(params[:order] || 'descend_by_date')
@products = @search.paginate(:conditions => { :category_id => @category, :brand_id => @brand }, :page => params[:page])
render :template => 'brands/show'
format.xml { render :xml => @category }
end
end
ブラウザのトレース情報である:それは、ライン25はrespond_toがそうである、showアクションライン25と28を指す
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in `method_missing'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/active_record/named_scope_tools.rb:16:in `named_scope_options'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic- 2.5.8/lib/searchlogic/named_scopes/alias_scope.rb:54:in `named_scope_options'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/named_scopes/or_conditions.rb:14:in `named_scope_options'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/search/scopes.rb:15:in `scope_options'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/search/method_missing.rb:80:in `cast_type'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/search/method_missing.rb:22:in `method_missing'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/search/method_missing.rb:36:in `send'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/searchlogic-2.5.8/lib/searchlogic/search/method_missing.rb:36:in `method_missing'
/Users/tjs/Sites/emeraldcg/app/controllers/categories_controller.rb:28:in `show'
/Users/tjs/Sites/emeraldcg/app/controllers/categories_controller.rb:25:in `show'
|形式|製品ライン -
ライン28は@searchです。
いただきまし奇妙私はカテゴリにURLを編集するために行けばということである:/カテゴリ/アンペアが/編集には、以下を返します:
ActiveRecord::RecordNotFound in CategoriesController#edit
Couldn't find Category with ID=amps
RAILS_ROOT: /Users/tjs/Sites/emeraldcg
Application Trace | Framework Trace | Full Trace
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/activerecord-2.3.5/lib/active_record/base.rb:1586:in `find_one'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/activerecord-2.3.5/lib/active_record/base.rb:1569:in `find_from_ids'
/Users/tjs/.rvm/gems/ruby-1.8.7-p352/gems/activerecord-2.3.5/lib/active_record/base.rb:616:in `find'
/Users/tjs/Sites/emeraldcg/app/controllers/categories_controller.rb:50:in `edit'
私のカテゴリーのモデル:このアプリはうまく働いた
class Category < ActiveRecord::Base
has_many :brands, :through => :products, :uniq => true
has_many :products
# acts_as_friendly_param :name
validates_presence_of :url_name
validates_uniqueness_of :url_name
def to_param
self.url_name
end
end
レール3の前に...とてもイライラして、私は新しいレールデベロッパーなので、戻ってレール2のプロジェクトを使用する方法を見つけようとしています。
ユーザーが関与していない)... @category = Category.find_by_url_name(paramsは[:ID])メソッド validates_presence_ofあるURL_NAMEによってカテゴリを見つけることです。 url_name validates_uniqueness_of:url_name def to_param self.url_name end –
ここでは例としてUserを指定しています。レールコンベンションでは、安らかなリソース/カテゴリ/アンプ/編集は/ categories /:id/editにマッピングされます。ですから、あなたはCategory.find(params [:id])を編集アクションやどこかで使用していると思われます。 – nkm
ああ、[OK]を、私は私はあなたが...ユーザーの混乱のために申し訳ありませんが言っているものを手に入れると思います。私のカテゴリテーブルには、管理者がdef to_param self.url_name endメソッドが動作し、@categoryインスタンス変数がurl_nameから引き出されている、クリーンなURL構造を作成できるurl_nameフィールドがあります。助けて。私はまだそれを完全に取得していないが、あなたたちは正しいdirで私を指しています。 –