2009-04-08 29 views
1

私はオブジェクトの編集アクションをレンダリングするためにlink_to_remoteを持っています。要求は思わRails:link_to_remote updateはビューをレンダリングしません

# GET /comments/1/edit 
    def edit 
    @comment = Comment.find(params[:id]) 
    respond_to do |format| 
     format.html 
     format.js { render :action => "edit" } 
    end 
    end 

= link_to_remote t("txt.edit"), :update => dom_id(comment), :url => edit_comment_path(comment.id) 

コメントコントローラでの私の編集アクション:それがないすべてがこの応答で更新DOM要素

try { } catch (e) { alert('RJS error:\n\n' + e.toString()); alert(''); throw e } 

ですが、私のリンクは、このようになりますログによればOKになる:

Processing CommentsController#edit (for 127.0.0.1 at 2009-04-08 18:55:36) [GET] 
    Session ID: 1d4b9b3d3319d5cd556d00d2e053b651 
    Parameters: {"authenticity_token"=>"5d70f9e5beded361ee7e87ee591512411e8f3eec", "id"=>"18"} 
    User Columns (2.0ms) SHOW FIELDS FROM `users` 
    User Load (0.5ms) SELECT * FROM `users` WHERE (`users`.`id` = 1) LIMIT 1 
    Account Columns (1.6ms) SHOW FIELDS FROM `accounts` 
    Account Load (0.2ms) SELECT * FROM `accounts` WHERE (`accounts`.`subdomain` = 'xxx') LIMIT 1 
    Comment Columns (1.7ms) SHOW FIELDS FROM `comments` 
    Comment Load (0.6ms) SELECT * FROM `comments` WHERE (`comments`.`id` = 18) 
Rendering comments/edit 
Completed in 30818ms (View: 2, DB: 7) | 200 OK [http://xx.xxx.rails/comments/18/edit?authenticity_token=5d70f9e5beded361ee7e87ee591512411e8f3eec] 

私は間違って何をしていますか?助けてくれてありがとう!

更新: これはRJSテンプレートを使用して動作します。これが私が今解決した方法です。しかし、私はまだビューがレンダリングされるソリューションを好む。さもなければ、私はこの目的のためだけに部分を作成しなければなりません(私はrjsページ更新でビューをレンダリングできません - 少なくとも私は方法を知らない)。

答えて

0

あなたが言わなかったことは、テンプレートが何であるか...私はそれが問題だと推測しています。

format.js {レンダリング:アクション=> "edit.html.erbを"}それはERBのような何か試すなら

+0

私はhamlテンプレートですので、試してみてください:render:action => "edit.haml"? –

+0

テンプレートのフルネームを使用してください。通常は 'action.mime.renderer'でなければならないので、 'edit.html.haml'はファイル名と 'render'に送信する内容の両方でなければなりません – AdminMyServer

0

をあなたはJavascriptへの参照を含めるのを忘れているかもしれように見えますあなたのビュー内にライブラリがあり、ビューはそれを解釈する代わりにリテラルJavaScriptをレンダリングしています。

<%= javascript_include_tag :defaults %> 
+0

いいえ、それらをすべて含めました。そうでないと、置き換えられませんまったく。 –

1

「respond_to」を両方ともキャッチしないでください。両方とも同じことを行っているためです。ただ、コメントアウト:

respond_to do |format| 
    format.html 
    format.js { render :action => "edit" } 
end 
+0

それは私が最初に試した方法ですが、それもうまくいきませんでした... –

1
:script => true 

link_to_remoteコールにこれを追加し、それがレールが任意のスクリプトが、むしろそれらをプレーンテキストを出力するよりも、返さ評価するべきです。

0

jsリクエストに応答するとき、render :action => "edit"は、edit.haml、htmlテンプレートではなく、rjs 'テンプレート'であるedit.rjsをレンダリングしようとします。

0

RJSタグから:updateオプションを削除します。私はそこに1つを持っていて、insert_htmlにしようとしていたときに、メソッドから返されたJSを表示していて、それをDOMで実行していませんでした。したがって、表示されている=> try {...}

render: update do |page| page.insert_html(...) endブロックを使用し、それを表示する代わりに返されたJSを実行しました:私のビューのlink_to_remoteステートメントから:update属性を取り出しました。

希望に役立ちます。

関連する問題