3

link_to_remote を使用して、ページのパーシャルを更新しています。問題は、Rails がパーシャルを見つけられないことです。

コントローラー メソッドでパーシャル (html.erb ファイル) へのフル パスを指定しています。

def my_method
 create something

 render :partial => '/shared/partials/my_partial_form', :layout => 'false'
end

「何か」が作成されるため、コントローラーメソッドがヒットしていることはわかっています。エラーが発生します"Template missing [:controller_name]/[:method_name].js.erb not found"

Railsがjs.erbへのデフォルトパスを使用しているように見える理由を誰か説明できますか?

前もって感謝します!

4

2 に答える 2

2

Rails は JS 形式に対応しています。render :partial は、アクションごとのアクションの 1 回の render/redirect 呼び出しとしてカウントされません。適切なレンダーまたはリダイレクトの呼び出しがなければ、Rails はフォーマット、コントローラー、およびアクションに基づくデフォルトの引数でレンダーを呼び出します。

Render :partial は呼び出し元にテキストを返すだけで、応答を構築しません。この場合、パーシャルは HTML にレンダリングされますが、何も行われません。PS :layout => false オプションは、パーシャルをレンダリングする際には不要です。

render :update または RJS ファイルを使用して、テンプレートを介して同じことを行いたい場合。

Web ページ全体を置き換えたいと仮定すると、短いバージョンは次のようになります。

def my_method create something

  render :update do |page|
    page.replace_html :body, :partial => '/shared/partials/my_partial_form'    
  end
end

RJS ルートに進むと、app/views/resource/my_method.rjs ファイルを作成して、次のように入力できます。

page.replace_html :body, :partial => '/shared/partials/my_partial_form'
于 2009-10-09T01:49:10.580 に答える
0

shared の前の / を削除してみてください。

render :partial => 'shared/partials/my_partial_form', :layout => 'false'
于 2009-10-09T03:00:09.580 に答える