2012-01-02 22 views
2

あなたが慣れ親しんでいると確信しているように、html.erbファイルを呼び出すRailsのアクションを持つことができます。また、埋め込みルビファイルを呼び出すためにリモートでレンダリングするアクションを設定することもできます(例えば、「投稿」フォームを「投稿」コントローラに送信し、リモートで処理し、js.erbファイルを呼び出してページ内の要素を更新するなど)。pageloadに埋め込みルビのjavascriptファイルを読み込むにはどうしたらいいですか?

私が知りたいのは、テンプレート(html.erbファイル)を読み込むアクションを実行しているときにjs.erbファイルを実行する方法です。私は、ユーザーの表示ページを実行する場合を検討し、説明するために:user_path(User.find(1))へのリンク

class UsersController < ApplicationController 
    def show 
    @user = User.find(params[:id]) 
    end 
end 

show.html.erbをロードします、そして、すべてが素晴らしいようです。

しかし、user_path(User.find(1))へのリンクをクリックしてshow.html.erbをロードし、またshow.js.erbをロードする場合はどうすればよいですか?もしこれが可能ならば、どうすればショーの定義をshow.html.erbcustom_js_file_name.js.erbにも適応させることができますか?

はFYI:私はRailsの3.0.9と2つの異なるアプリケーション上の3.1.3を使用して、と私はUsersフォルダにshow.js.erbまたは他のものを置くことを前提としています(ビュー/ユーザー/ ...

答えて

1

def show 
    @user = User.find(params[:id]) 
end 

だけ私が何を記述していることの方が適していると思いますそれはHTML、JSON、JSを経由して要求された場合に基づいshowビューなど

をレンダリングしますrenderメソッドを呼び出します。通常、コントローラーは、respondブロックの異なるformat.(:format)メソッドを使用して、要求タイプ(JSON、HTML、JSなど)に基づいてコントローラー呼び出しに応答します。

あなたshow.html.erbファイルで:

<%= render "users/show.js" %> 

これは、あなたがあなたの意見の別の一つにしたい任意のファイルをレンダリングすることができます。

+0

:(すべてのパーシャルが先頭に_文字で命名され、_my_partial.some_format.erbファイルをレンダリングすることになる<%= render :partial => "users/my_partial" %>経由で呼び出され注)これはまた、あなたはパーシャルと呼ばれる小さい(再利用可能)の部分にあなたの大きなビューファイルを分割することができますこれは埋め込まれたJavaScriptとしてコードを実行しますか? (つまり、警告( 'Hello World')を含むファイルで警告が表示されます) – jay

+0

一般的なスクリプトタグとDOM対応のjavascriptラッパーでラップする限り、そのレンダリングされたコードはページの読み込み時に実行されます – iwasrobbed

-1

jsという形式で要求された場合は、ファイルをshowアクションでレンダリングしてみてください。動的テンプレートをレンダリングするにはRailsを使うべきです。今すぐ元のshow.html.erbからjavascriptのリンクタグを使ってリンクします。 show.html.erb

<script type="text/javascript" src="<%= show_users_path(@user.id) -%>.js"></script> 

私はこれを試していないとshow.js.erbのレンダリングが問題になる追加の書式を置いてもよいです。デフォルトでは

関連する問題