我被困住了;我做了一个搜索,我找不到如何让这个项目工作的指针。我在index.html.erb上有一个表单:
<html> <head>
<title>Ajax List Demo</title> <h1>Listing posts</h1>
<%= javascript_include_tag "prototype" %> </head> <body>
<h3>Add to list using Ajax</h3>
<% form_tag ( :remote=>true, :update => 'my_list', :action => :list , :method=>:post, :format =>:xml ) do %>
Enter the url:
<%= text_field_tag 'url' ,'', :size => 80 %>
<%= submit_tag "Find" %>
<% end %>
<div id="my_list"><%= render :partial => 'profiles/list' %></div> </body> </html>
现在我有一个名为my_list的div。当我提交表单时,我想要我的部分_list.html.erb(在配置文件目录内,也尝试了主页目录)来更新列表的结果。
我的家庭控制器有这种方法:
def list
puts "here!!!!"
reader = Reader.new
@profiles = reader.processURL(params[:url])
render :partial=>'profiles/list', :locals => { :profiles => @profiles}
end
我最终收到此错误:
ActionView::MissingTemplate (Missing partial profiles/list with {:locale=>[:en, :en], :handlers=>[:rjs, :builder, :rhtml, :rxml, :
erb], :formats=>[:xml]} in view paths "C:/Users/....tree/app/views"):
app/controllers/home_controller.rb:22:in `list'
Rendered C:/Ruby187/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/missing_template.erb
within rescues/layout (1.0ms)
任何人都可以帮助我或者向我发送正确的方向来了解如何通过表单提交更新div渲染吗?再次感谢。
答案 0 :(得分:0)
首先,我通过render(@homepages)
在index.html.erb
中获取index.js.erb
的ajax确定,但我搜索更新@homepages无效。
在javascript_include_tag
您错过了rails.js
我认为处理了ajax请求。 javascript_include_tag :defaults
会为你完成所有这些以及其他一些你不需要的事情。如果您没有使用jquery,则需要原型并且至少需要rails.js
。
我认为此form_tag
的格式不正确:
<% form_tag (:remote=>true, :update => 'my_list', :action => :list , :method=>:post, :format =>:xml) do %>
“(”之后的第一个值应为item_path
,然后是条件:action => :list
。
:method => post
会带您进入create
或new
行动。
:update => 'my_list'
将使用javascript(原型)
list.js.erb
中完成
jquery和prototype的代码类似,但略有不同(参见Railscast 205)
为什么在form_tag中格式化xml,把它放在控制器“list”中我的是:
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @homepages }
format.js
end
不确定你是否可以使用'url'而不是它:url你可以使用它们。
当我收到丢失的模板时,那是因为它正在寻找search.html.erb
文件。在您的情况下,它正在寻找list.html.erb
。