1

オブジェクトの編集アクションをレンダリングする link_to_remote があります。ただし、この応答で Dom 要素を更新するだけです

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

私のリンクは次のようになります。

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

コメントコントローラーでの私の編集アクション:

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

ログによると、リクエストは問題ないようです。

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 ページの更新でビューをレンダリングすることはできません - 少なくとも方法はわかりません)。

4

6 に答える 6

1
:script => true

これを呼び出しに追加すると、link_to_remote返されたスクリプトを平文で出力するのではなく、Rails が評価するようになります。

于 2009-06-26T11:45:19.990 に答える
0

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

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

それが役立つことを願っています。

于 2010-08-01T23:08:18.603 に答える
0

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

于 2009-11-18T15:47:50.130 に答える
0

ビューに Javascript ライブラリへの参照を含めるのを忘れている可能性があり、ビューは JavaScript を解釈する代わりにリテラル JavaScript をレンダリングしています。

<%= javascript_include_tag :defaults %>
于 2009-04-09T02:10:19.137 に答える