代码之家  ›  专栏  ›  技术社区  ›  chris

rails ajax和partials

  •  0
  • chris  · 技术社区  · 16 年前

    我不能让分部迭代-我传递的对象与分部变量从不匹配

    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'
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   Mato    16 年前

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

    您可以执行Story.Find(:First),如果您只想选择一个Story,或者您可以替换

    :object => @story
    

    具有

    :collection => @story 
    

    渲染多个故事。