我目前有一个链接,点击后调用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>
注意我非常unAJAXy document.location.reload();在onSuccess回调中。
我希望DataController #process执行此操作...
def process
...
render :update do |page|
page.replace 'my_div', :partial => 'test'
end
end
任何人都可以指导我在调用JavaScript for page.replace工作时需要更改的内容吗?当然,现在它被忽略了。
我尝试了各种各样的东西,并且四处阅读,但在这种情况下,我无法得到我需要做的事情。
由于
答案 0 :(得分:2)
从渲染器中取出渲染并将其放入views / datas / process.js.rjs
page.replace("my_div", :partial => "test")
答案 1 :(得分:0)
我不确定您希望它如何工作,但有一个remote_form_for
标记可以为您处理请求。此外,您可能希望查看以下链接以获取有关使用RJS模板的示例:
答案 2 :(得分: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
答案 3 :(得分: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
(小伙子 - 我会把它放在一边!)