And*_*ham 2 ajax ruby-on-rails partial
更新:我的问题得到了解答,但我写了一篇博文,详细说明了我是如何做到这一点的:http: //lathamcity.com/posts/ajaxInRails.html
我有一个页面,显示基于Ruby对象的事物列表.我的目标是进行Ajax调用以获取新的Ruby对象,然后基于此更新列表.
我认为这样做的方法是偏爱.我使用代码中的Rails实例变量使整个列表成为部分文件.然后我想要Ajax调用将相应的实例变量设置为新列表并重新呈现部分.
这是最终目标,但是现在我正在尝试做一个非常基本的版本,我只是将一个实例变量设置为字符串,然后显示字符串.
所以在我的div中,我有:
<% form_tag :action => :go , :method => :get, :remote => true do %>
<%= submit_tag "Go" %>
<% end %>
<div id="test"><%= render(:partial => 'test') %></div>
Run Code Online (Sandbox Code Playgroud)
在views/interface(我的控制器名称)文件夹中有一个_test.erb文件,只有以下行作为其内容:
<%= @test %>
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中,
def go
@test = "Hello You"
render :update do |page|
page.replace_html "test", :partial => "test"
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到: Missing template interface/update, application/update
我不太了解render :update,我在谷歌的一个例子中找到了它.
我做错了什么导致了这个问题,我该如何解决?我是以正确的方式解决这个问题还是有更好的方法来做到这一点?
我认为无论是render :update和replace_html被抛弃了/在轨3.1去除.进行部分更新的标准方法是使用js.erb模板.
在您的控制器中,告诉您的操作响应js请求:
@test = "Hello you"
respond_to do |format|
format.js
end
Run Code Online (Sandbox Code Playgroud)
创建js响应模板app/views/interface/go.js.erb:
$('#test').html("<%= escape_javascript(render('test', test: @test})) %>")
Run Code Online (Sandbox Code Playgroud)
并将部分代码更改为,<%= test %>因为它不再是实例变量; 相反,测试将作为参数从js.erb模板传递给partialtest: @test
| 归档时间: |
|
| 查看次数: |
3657 次 |
| 最近记录: |