アプリを開発 (Rails 3.2、Ruby 1.8.7、Webrick) から製品 (Rails 3.2、Ruby 1.8.7、Passenger) に移行する際に問題が発生しています。現在、2 つの問題があり、解決する喜びがありません。1つは私のルートです:
Started PUT "/clubs/myclub"
ActionController::RoutingError (No route matches [PUT] "/myclub"):
actionpack (3.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (3.2.2) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.2) lib/rails/rack/logger.rb:26:in `call_app'
railties (3.2.2) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.2) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.1) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.2) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.1) lib/rack/lock.rb:15:in `call'
actionpack (3.2.2) lib/action_dispatch/middleware/static.rb:61:in `call'
rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
rack-cache (1.2) lib/rack/cache/context.rb:143:in `pass'
rack-cache (1.2) lib/rack/cache/context.rb:155:in `invalidate'
rack-cache (1.2) lib/rack/cache/context.rb:71:in `call!'
rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
railties (3.2.2) lib/rails/engine.rb:479:in `call'
railties (3.2.2) lib/rails/application.rb:220:in `call'
railties (3.2.2) lib/rails/railtie/configurable.rb:30:in `send'
railties (3.2.2) lib/rails/railtie/configurable.rb:30:in `method_missing'
passenger (3.0.18) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
passenger (3.0.18) lib/phusion_passenger/abstract_request_handler.rb:516:in
次のコマンドを実行すると、ルートがあることがわかります。
[~/prod/current]# RAILS_ENV=production bundle exec rake routes | grep clubs
clubs GET /clubs(.:format) clubs#index
POST /clubs(.:format) clubs#create
new_club GET /clubs/new(.:format) clubs#new
edit_club GET /clubs/:id/edit(.:format) clubs#edit
club GET /clubs/:id(.:format) clubs#show
PUT /clubs/:id(.:format) clubs#update
DELETE /clubs/:id(.:format) clubs#destroy
DEV セットアップでルートを比較すると、違いはわかりません。
私が得る2番目の問題は次のとおりです。
NoMethodError (undefined method `pageType=' for #<StaticPage:0x2b228afb8df8>):
app/controllers/static_pages_controller.rb:34:in `showbyType'
app/controllers/static_pages_controller.rb:22:in `show'
面白いことに、pageType はメソッドではなく、変数です。
@static_page = StaticPage.new
@static_page.pageType = params[:pageType]
最後の行は 34 番です。モデルの StaticPage とその宣言をチェックしました。
attr_accessible :title, :content ,:pageType
私が本番環境にいるときだけ、開発環境ではこれらの問題は見られません。エラーは、開発者に見られるようなものですが、問題はありません。
誰かが私を正しい方向に向けることができれば、私はそれを感謝します.
- -アップデート
それに関する単なる更新。課題のやり方を変えました。ページタイプを具体的に割り当てるメソッドを作成しました。そうみたい
@static_page.set_page_type( params[:pageType])
Railsは文句を言わなくなりましたが、ビューをヒットすると爆破されます
ActionView::Template::Error (undefined method `pageType' for #<StaticPage:0x2ba1008d50f0>):
5: <%= f.inputs do %>
6: <%= f.input :title %>
7: <%= f.input :content %>
8: <%= f.input :pageType , :as => :hidden %>
9:
10: <% end %>
これは、私がどういうわけか同期していないと信じることにつながります。「pageType」はDBに存在します。私のモデルクラスには存在しますが、どういうわけかレールは存在しないと考えています。どこを見ればよいか、またはどのように解決すべきかについてのアイデアはありますか?