1

これについて何時間もグーグルで頭を悩ませた後、ついにこの質問を投稿することにしました。これがコードです...

view1.html.erb
-------------- 
<%=link_to_remote_redbox "Link", :url => {:action => :action1, :id => @some.id} 

some_controller.rb
------------------
def action1
  render :layout => false
end

def action2
  do some processing
end


action1.html.erb
--------------------
<form onsubmit="new Ajax.Request('/some_controller/action2', {asynchronous:true, evalScripts:true, onComplete:function(request){RedBox.close(); return false;}, parameters:Form.serialize(this)}); return false;}" method="post" action="/some_controller/action2">
<input type=text name='username'>
<input type='submit' value='submit'> 
</form>  

action2.rjs
-----------
page.replace_html("some_div", (render(:partial => "some_partial")))

action2.rjsが起動したときにそのコードを配置すると、代わりにhtmlページが表示されるはずです

Element.update("some_div", "<style type=\"text/css\">\n\n..............

私が読んだ他の投稿で示唆されているように、link_to_remote_redbox 関数の「:update => some_div」が原因であると言われていますが、明らかに私のコードにはそれがありません。

ヘルプはいつでも大歓迎です。どうもありがとう

4

3 に答える 3

0

以下を試してください:-

def action2
  render :update do|page|
    page.replace_html, 'some_div', :partial => 'some_partial'
  end
end

また

<form onsubmit="new Ajax.Request('', {asynchronous:true, evalScripts:true, onComplete:function(request){RedBox.close(); return false;}, parameters:Form.serialize(this)}); return false;}" method="post" action="/some_controller/action2">
于 2010-04-06T14:20:34.563 に答える
0

レイアウトにデフォルトの JavaScript ファイルが含まれていることを確認してください。言い換えると:

于 2010-04-06T14:11:58.307 に答える
0

Salil のメソッドは、ブラウザから ajax 呼び出しを返したい場合に機能します。しかし、より複雑な JavaScript (コントローラーで面倒になる可能性があります) を呼び出したい場合は、代わりに次のようにします。

def action2
  ...some code
  respond_to do |format|
    format.js
  end
end

これにより、Rails は HTML ではなく JavaScript を返すように明示的に指示されます。これは、RJS ではなく jQuery を使用する場合にも役立ちます。

乾杯!

于 2010-04-06T14:24:44.930 に答える