【问题标题】:rails ajax and partialsrails ajax和partials
【发布时间】:2009-10-09 21:34:27
【问题描述】:

我无法得到一个部分来迭代——我传递的对象永远不会匹配部分变量

ajax的控制器方法

 def news
  @fixture = Fixture.find(params[:fixture_id])
  home_team = Team.find(@fixture.home_team)
  away_team = Team.find(@fixture.away_team)

  @story = Story.find(:all, :conditions => "team_id = #{home_team.id}", :order => "dated DESC", :limit => 5)


   respond_to do |format|
    format.js do 
       render :update do |page|
       page.replace_html "home_id_fixture_#{@fixture.id}", :partial => "story/story", :object => @story
      end
    end
   end
 end

部分代码

<div id="story-vote-<%= story.id %>">x</div>
<div id="story-title"><%= story.title %></div>

错误

ActionView::TemplateError (undefined method `title' for []:Array) on line #3 of app/views/story/_story.erb:
1: 
2: <div id="story-vote-<%= story.id %>">x</div>
3: <div id="story-title"><%= story.title %></div>
4: 
5:   

    app/views/story/_story.erb:3
    app/controllers/hub_controller.rb:75:in `__instance_exec0'
    app/controllers/hub_controller.rb:74:in `news'
    app/controllers/hub_controller.rb:72:in `news'

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    Story.find(:all) 返回一个数组。所以实际上,当您尝试获取 title 属性时,您是在尝试从数组中获取它。

    如果你只想选择一个故事,你可以做 Story.find(:first) 或者你可以替换

    :object => @story
    

    :collection => @story 
    

    渲染多个故事。

    【讨论】:

    • 发现了我的问题。插入故事代码没有添加带有 team_id 的故事,因此页面正在更新为 null
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多