問題タブ [ruby-on-rails-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prototypejs - rails.js UJS オブザーバーが form.submit() を見逃した
Rails 3 アプリで、特定のチェックボックスが切り替えられるたびにブラウザーがリモート関数を呼び出すようにしたいと考えています。Rails 2 では、これは簡単に渡すことができました。
チェックボックスヘルパーに。Rails 3 では、remote_* 関数が非推奨になったため、次の回避策を試しました。
- を使用してチェックボックスの周りにフォームを作成します
form_tag ... :remote => true
- ハンドラー
$("dummy_form").submit();
から呼び出してフォームを送信するonclick
Rails にバンドルされている rails.js ファイルには、submit
イベントをリッスンするオブザーバーがあります。ただし、これらはユーザーが送信ボタンをクリックしたときにのみトリガーされるように見えますが、form.submit()
呼び出されたときにはトリガーされません (これまでのところ、FF でのみテストされています)。
これにより、送信が AJAX を介してバックグラウンドで行われるのではなく、通常の方法で行われるという望ましくない影響が生じるため、ブラウザーは現在のサイトを離れ、コントローラーからの応答を表示します。
誰かが回避策を知っていますか? たぶん、同じ機能を取得するためのまったく異なる方法ですか?
ruby-on-rails - キュウリでlibから認証ファイルを要求する
初めてCucumberを試してみたところ、問題が発生しました。RyanB の気の利いた認証ジェネレーターを使用しようとしていますが、Cucumber 機能を実行するときにヘルパー メソッドを使用できないようです。
問題を引き起こす私の機能の一部:
サポート/paths.rb:
routes.rb :
認証ヘルパー メソッド (current_user など) を提供するコードは、lib/ フォルダー内にあります。私はもう試した:
私のenv.rbでは、それは何もしていないようです。では、代わりにここで何をすべきでしょうか? これには簡単な解決策があるはずだと思いますが、それは私の頭を悩ませているだけです。
追加情報
宝石環境:
また、Rails 3.0.0.beta を実行していますが、この場合は関係ないと思います。
ruby-on-rails - Rails 3 x_sendfile on heroku
Rails 3を使用すると、静的ファイルをHTTPクライアントに直接、より高性能に送信し、アプリサーバープロセスをバイパスできます(説明されているように、http://john.guen.in ...を参照してください) 。
アプリをherokuにデプロイしたい。
herokuはNginx0.6.32を使用します(http://docs.heroku.com/aspenを参照)。
x_sendfile
Herokuで動作しますか?
これが私がNginxhttp://wiki.nginx.org/NginxXSendfileで見つけたものです
乾杯
ruby-on-rails - Rails3ベータ版をインストールした後にscript/xタスクの実行に問題があるのはなぜですか?
OSXLeopardにrails3ベータ版をインストールしました。その後、それをテストするためのRailsプロジェクトを作成しました。そのフォルダの中から、私はスクリプト/生成、あるいはスクリプト/サーバーさえも実行できません。
''を返します-bash: script/server: No such file or directory
。この問題を解決するにはどうすればよいですか?
ruby-on-rails - hamlとrails3の使用に問題がある
rails3をインストールした後、hamlを使用しようとすると問題が発生します。
更新されたgemをインストールし、その後rails PROJECT_NAME
、haml --rails
そのルートでインストールしました。
予想通り、プラグイン内にhamlフォルダーinit.rbがあるので、うまく機能していたようです。
しかし、レーキ、またはRailsサーバーを使用しようとすると、次のようになります。
--traceを使用すると、次のようになります。
javascript - Ruby on Rails 3 Beta: ajax get リクエストで、html.erb ビューで応答できません。回避策はありますか?
私は Rails 3 ベータ版を使い始めており、通常のスターター プロジェクトを実行しようとしています。プロジェクトの単純なリストを作成しますが、アプリのナビゲーションには ajax リクエストを使用します。Rails 3 では、私の通常のコードは基本的な scaffold では機能しません。
これが私のプロジェクトコントローラーからのスニピットです:
format.js の行に注目してください。私は JavaScript に Mootools ライブラリを使用していますが、Rails 3 が提供する新しい目立たないフックはまだ試していないため、まだ手で書いています。ページで「新規」リンクがクリックされたときに発生する JavaScript リクエストを次に示します。Mootools では、Request.HTML update 属性が、HTML にある div を ID 'main' で更新します。
リンクがクリックされたときに何が起こっているのかというと、コントローラーは、私が持っていない new.js.erb ファイルを使用して js 呼び出しに応答しようとします。Rails の以前のバージョンでは、これは当てはまらず、new.html.erb で自動的に応答していました。コントローラーで format.js 行を削除すると、応答が返されますが、javascript を介して呼び出されたときに応答にレイアウトを持たせたくありません。
Rails 3 ベータ版で変更されたことはありますか?
ruby-on-rails - Rails で assert_routing を介してホスト制約のあるルートをテストする
ホストをチェックするために制約を使用しているルートと、本質的に同じであるがホスト制限のないルートがあります (これらは実際には名前空間ですが、物事を簡単にするために、この例で行います):
get "/page_key"
これらは、ブラウザ経由でアクセスするときや、ホストを定義して実行するときの統合テストなどで、期待どおりに機能します。
ただし、これらのルートが機能することを確認するテストを作成したいのですが、これまでのところ、次のテスト (現在ActionController::IntegrationTest
ホストを設定できるようになっている) が制約のないものと一致しているため、あまり運がありません。
Constraint proc で env をダンプしようとすると、得られるのは--- :controller
.
assert_routing を取り除き、get :show
呼び出しとダンプを実行@controller
すると、正しいコントローラーに解決されます (これらのルートはすべて HTTP 要求を介して正常に機能するため、予想どおり)。
ruby-on-rails - Rails 3でActiveRecordアソシエーションをどのようにスコープしますか?
Rails3プロジェクトがあります。Rails 3には、Arelと、あるスコープを再利用して別のスコープを構築する機能が搭載されています。関係を定義するときにスコープを使用する方法があるかどうか疑問に思っています(たとえば、「has_many」)。
パーミッション列のあるレコードがあります。レコード(リレーションシップを介してアクセスされるレコードも含む)がフィルター処理されるように、アクセス許可列を考慮に入れるdefault_scopeを作成したいと思います。
現在、Rails 3では、default_scope(私が見つけたパッチを含む)は、proc(後期変数バインディングに必要)を渡すための実行可能な手段を提供していません。名前付きスコープを渡すことができるhas_manyを定義することは可能ですか?
名前付きスコープを再利用するというアイデアは、次のようになります。
または、関係でその名前付きスコープを暗黙的にコーディングすると、次のようになります。
実行時バインディングを使用してdefault_scopeを適用しようとしています。私はArelアプローチ(ある場合)を使用したいと思いますが、実行可能なオプションを使用します。
現在のユーザーを参照しているため、次のような最後の時点で評価されていない条件に依存することはできません。
ruby-on-rails - Rails 3 のメモリの問題
Ruby on Rails 3 beta に基づいて新しいサイトを開発しています。ただのベータ版であることを考えると、これは悪い考えかもしれないことはわかっていましたが、それでもうまくいくかもしれないと思っていました.
Railsが大量のメモリを消費するという大きな問題があります。
今日の私のアプリケーションでは、リクエストごとに約 10 mb を消費し、それも解放していないようです。そのため、これはアプリケーションの肥大化が原因である可能性があると考えたため、比較するためだけにテスト アプリを作成しました。
私のテスト アプリでは、足場を使用してモデルを生成し、このモデルで約 20 のレコードを作成しました。
次に、インデックス ページに移動して更新を押すと、すぐにメモリが増えていることがわかりました。私のアプリよりも少ないですが、リクエストごとに約1〜3 mbです。
私は OSX Leopard で、Ruby 1.8.7、Rails 3.0.0.beta、および開発用の SQLLite db で作業しています。
誰かが私の問題を認識していますか?
ここで助けていただければ幸いです。:/
ありがとう!
ruby-on-rails - Rails3アプリケーションはいつ初期化されますか?
Rails 3とBundlerで左右を争ってきました。Rails アプリケーションがまだロードされていない場合、正しく動作しない gem がいくつかあります。rails3 ブランチであっても、factory_girl と shoulda はどちらも例です。shoulda を例にとると、実行しようとするrake test:units
と次のエラーが発生します。
DEPRECATION WARNING: RAILS_ROOT is deprecated! Use Rails.root instead. (called from autoload_macros at c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:40)
c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'join': can't convert #<Class:0x232b7c0> into String (TypeError)
from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'block in autoload_macros'
from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'map'
from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/autoload_macros.rb:44:in 'autoload_macros'
from c:/code/test_harness/vendor/windows_gems/gems/shoulda-2.10.3/lib/shoulda/rails.rb:17:in '<top (required)>'
lib/shoulda/rails をもう少し深く掘り下げると、次のようになります。
root = if defined?(Rails.root) && Rails.root
Rails.root
else
RAILS_ROOT
end
# load in the 3rd party macros from vendorized plugins and gems
Shoulda.autoload_macros root, File.join("vendor", "{plugins,gems}", "*")
つまり、ここで何が起こっているかというと、Rails.root が定義されている間、Rails.root == nil が使用され、RAILS_ROOT が使用され、RAILS_ROOT==nil がそれから Shoulda.autoload_macros に渡されます。明らかに、Rails アプリはまだ初期化されていません。Rails3 で Bundler を使用するようになった今、Bundler 側で gem が必要な順序を指定できるようにするための騒ぎがありましたが、これで目前の問題が解決するかどうかはわかりません。
最終的に私の質問は次のとおりです: environment.rb ファイル (実際にアプリケーションを初期化するファイル) が取り込まれるのはいつですか? アプリが初期化され、config/application.rb の Bundler.require 行の前にそれが発生したときにバンプアップすることに害はありますか? 自分で順序を指定するためにバンドラーをハックして、最初に Rails gem を取り込もうとしましたが、Rails gem を要求しても実際にアプリケーションが初期化されるようには見えません。
アプリが初期化される前にこの行 (config/application.rb 内) が呼び出されるため、初期化するレールを必要とするバンドラー Gemfile 内のすべての gem がタンクに入れられます。
# Auto-require default libraries and those for the current Rails environment.
Bundler.require :default, Rails.env