【问题标题】:Ruby On Rails 3 submit form AJAX update results in divRuby On Rails 3 在 div 中提交表单 AJAX 更新结果
【发布时间】:2011-04-28 09:02:39
【问题描述】:

我被困住了;我进行了搜索,但找不到有关如何使该项目正常工作的指针。我的 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)

谁能帮助我或向我发送正确的方向以了解如何在表单提交时通过 Rails 更新 div 渲染?再次感谢。

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-3


    【解决方案1】:

    首先,我通过index.js.erb 将ajax 发送到index.html.erb 中的render(@homepages),但是我对更新@homepages 的搜索不起作用。

    在您的 javascript_include_tag 中,您错过了我认为处理 ajax 请求的 rails.jsjavascript_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 =&gt; :list

    :method =&gt; post 应该将您带到createnew 操作。

    :update =&gt; 'my_list' 将使用 javascript(原型)在 list.js.erb 中完成

    jquery 和原型的代码相似,但略有不同(见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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      相关资源
      最近更新 更多