0

Ruby on Rails でファイルをアップロードするためにこの例を使用しています。

ルーティングに問題があります:

エラー:

ActionController::RoutingError (No route matches {:action=>"show", :controller=>"cars", :locale=>#<Car id: 19, car_name: "bwl",, created_at: "2013-01-27 19:12:13", updated_at: "2013-01-27 19:12:13">}):
  app/models/arraydb.rb:46:in `to_jq_car'

問題が to_jq_car 関数と次の行にあることがわかりました。

"delete_url" => car_path(self)

しかし、私はそれを修正する方法がわかりません。

ルート.rb:

resources :cars
match '/show', :to =>'car#index'

root :to => 'cars#index'

cars_controllers.rb

class CarsController < ApplicationController


  def index
    @cars = Car.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @cars.map{|car| car.to_jq_car } }
    end
  end


  def show
    @car = Car.find(params[:id])

    respond_to do |format|
      format.html 
      format.json { render json: @car }
    end
  end

end

そしてcar.rbには次の機能があります:

 def to_jq_car
    {
      "name" => (read_attribute(:arraydb_name)).split(".").first,
      "url" => car.url(:original),
      "delete_url" => car_path(self),
      "delete_type" => "DELETE",


    }
  end

レーキルート:

cars GET        (/:locale)/cars(.:format)                                  cars#index {:locale=>/en|de|es|ru|zh_cn|ar/}
POST       (/:locale)/cars(.:format)                                  cars#create {:locale=>/en|de|es|ru|zh_cn|ar/}
new_car GET        (/:locale)/cars/new(.:format)                              cars#new {:locale=>/en|de|es|ru|zh_cn|ar/}
edit_car GET        (/:locale)/cars/:id/edit(.:format)                         cars#edit {:locale=>/en|de|es|ru|zh_cn|ar/}
car GET        (/:locale)/cars/:id(.:format)                              cars#show {:locale=>/en|de|es|ru|zh_cn|ar/}
PUT        (/:locale)/cars/:id(.:format)                              cars#update {:locale=>/en|de|es|ru|zh_cn|ar/}
DELETE     (/:locale)/cars/:id(.:format)                              cars#destroy {:locale=>/en|de|es|ru|zh_cn|ar/}
show            (/:locale)/show(.:format)                                      car#index {:locale=>/en|de|es|ru|zh_cn|ar/}
root            /(:locale)(.:format)                                           cars#index {:locale=>/en|de|es|ru|zh_cn|ar/}

前もって感謝します

4

1 に答える 1

1

:locale パラメータによるエラーの原因

あなたはルートにいます

cars#index {:locale=>/en|de|es|ru|zh_cn|ar/}

したがって、:locale 値はリスト内のいずれかである必要がありますen|de|es|ru|zh_cn|ar

このパラメーターをコントローラーに渡す場所を見つけて修正する必要があります

ApplicationControllerで使用できます(またはすでに使用している可能性があります)

def default_url_options
  {:locale => I18n.locale}
end
于 2013-01-29T14:52:47.833 に答える