2

現在、クリックするとJavaScript関数を呼び出すリンクがあります。この関数は、データを収集し、ProtoTypeを使用してフォームを送信します...

function myFunction(){
  data = someobject.getData();
  $('myform').request({
    parameters: {data:data, id:id,},
    onSuccess: function(transport) { 
      document.location.reload();        
    }
  });  
}
...
<%= form_tag({:controller => "data", :action => "process"}, :id => "myform") %></form>

私の非常にunAJAXydocument.location.reload();に注意してください。onSuccessコールバックで。

DataController#processにこれを実行させたい...

def process
  ...
  render :update do |page|
    page.replace 'my_div', :partial => 'test'
  end
end

page.replaceを機能させるためにJavaScriptを呼び出す際に何を変更する必要があるかについて誰かが私を案内できますか?もちろん、今は無視されます。

いろいろ試して読んでみましたが、この状況でやらなければいけないことがわかりません。

ありがとう

4

4 に答える 4

2

コントローラーからレンダリングを取り出して、これを views/datas/process.js.rjs に入れます

page.replace("my_div", :partial => "test")
于 2009-06-04T14:18:49.960 に答える
0

form_for を次のように変更できます。

<% form_remote_tag :url => {:controller => "data", :action => "process"},
                   :html => {:id => 'my_form'},
                   :update => 'my_form' do %>

次に、コントローラーでパーシャルをレンダリングすると、「my_form」が更新されます。

def process
  ...
  render partial => 'test'
end
于 2009-06-04T14:23:53.770 に答える
0

どのように機能させたいのか正確にはわかりませんがremote_form_for、リクエストを実行するタグがあります。また、RJS テンプレートの使用例については、以下のリンクを参照してください。

http://www.developer.com/lang/article.php/3668331

于 2009-06-04T14:17:37.293 に答える
0

すべての提案に感謝します-これが私がやったことです:

function myFunction(){
  ...
  $('data').value = data;
  $('id').value = id;
  $('myform').request();  
}
...
<%= form_remote_tag 
  :url => {:controller => 'data', :action => 'process' }, 
  :html => {:id => 'myform'}%>
     <input type="hidden" id="data" name="data"/>
     <input type="hidden" id="id" name="id"/>
</form>

これを行うDataController#processで...

def process
  ...
  render :update do |page|
    page.replace 'my_div', :partial => 'test'
  end
end

(チャップ - これを部分的に入れます!)

于 2009-06-04T20:33:02.307 に答える