2012-12-02 100 views
0

我有一個部分,我試圖通過create.js.erb來加載,問題在於,當我可以從視圖中部分加載時,它會加載正常,但是當我嘗試調用它時在阿賈克斯行動我得到每個https://gist.github.com/4191176在ajax請求中出現部分錯誤導致出錯

hashtag.rb

class Hashtag < ActiveRecord::Base 

    attr_accessible :text, :profile_image_url, :from_user, :created_at, :tweet_id, :hashtag, :from_user_name 

def self.pull_hashtag(hashtag) 
    hashtag_scrubbed = hashtag 
    Twitter.search("%#{hashtag}", :lang => "en", :count => 100, :result_type => "mixed").results.map do |tweet| 
    unless exists?(tweet_id: tweet.id) 
     create!(
      tweet_id: tweet.id, 
      text: tweet.text, 
      profile_image_url: tweet.user.profile_image_url, 
      from_user: tweet.from_user, 
     from_user_name: tweet.user.name, 
      created_at: tweet.created_at, 
     hashtag: hashtag 
     ) 
     end  
    end 
    end 
end 

hashtags_controller

class HashtagsController < ApplicationController 

    def home 

    end 

    def vote 
     @random_hashtags = Hashtag.order("RANDOM()").limit(4) 
    end 

    def show 


    end 

    def index 

    end 

    def create 
     Hashtag.pull_hashtag(params[:hashtag]) 
     respond_to do |format| 
     format.html { redirect_to vote_path } 
     format.js 
    end 
    end 
end 
一個NoMethodError

create.js.erb

$(".live-votes").slideDown(2222).prepend("<%= escape_javascript(render(:partial => 'shared/vote_tweets', :object => @random_hashtags)) %>") 

_vote_tweet局部

<% @random_hashtags.each do |hashtag| %> 
<div class="span4 twitter-spans-v1"> 
     <div id="tweet-block-v1" class="hashtag-tweet-database-container"> 
     <div class="tweet-block-border-v1"> 
     <div class="tweet-block-spacing-v1"> 
      <div class="twitter-block-author-v1"> 
      <a class="twitter-block-user-v1" target="_blank" href="https://twitter.com/<%= hashtag.from_user %>"> 
      <span class="twitter-author-image-v1"><img alt="" class="twitter-author-image-photo-v1" src="<%= hashtag.profile_image_url %>"></span> 
      <span class="twitter-author-name-v1"><%= hashtag.from_user_name %></span> 
      <span class="twitter-author-nickname-v1">@<%= hashtag.from_user %></span> 
      </a> 
      <iframe class="twitter-follow-button-v1" scrolling="no" frameborder="0" src="//platform.twitter.com/widgets/follow_button.html#align=right&button=grey&screen_name=<%= hashtag.from_user %>&show_count=false&show_screen_name=false&lang=en" allowtransparency="true"> 
      </iframe> 
      </div> 
     <div class="twitter-text-container-v1"> 
     <p class="twitter-text-field-v1"> 
     <%= hashtag.text %> 
     </p> 
     </div> 
     <div class="twitter-footer-v1"> 
      <a class="twitter-view-details-v1" target="_blank" href="https://twitter.com/<%= hashtag.from_user %>/statuses/<%= hashtag.tweet_id %>"> 
      <span class="tweet-date-v1"><%= hashtag.created_at.strftime("%d %b %Y") %></span> 
      </a> 
      <span class="twitter-vote-button-v1"><a href="#" class="btn btn-mini btn-primary">#WINNING</a> 
</span> 
      <script type="text/javascript" src="//platform.twitter.com/widgets.js"></script> 
      <ul class="twitter-intent-ul-v1"> 
       <li class="twitter-intent-li-v1"><a href="https://twitter.com/intent/tweet?in_reply_to=<%= hashtag.tweet_id %>" class="twitter-intent-tweet" title="Reply"></a></li> 
       <li class="twitter-intent-li-v1"><a href="https://twitter.com/intent/retweet?tweet_id=<%= hashtag.tweet_id %>" class="twitter-intent-retweet" title="Retweet"></a></li> 
       <li class="twitter-intent-li-v1"><a href="https://twitter.com/intent/favorite?tweet_id=<%= hashtag.tweet_id %>" class="twitter-intent-favorite" title="Favorite"></a></li> 
      </ul> 
     </div> 
     </div> 
     </div> 
     </div> 
    </div> 
        <% end %> 

錯誤

NoMethodError in Hashtags#create 

Showing ./app/views/shared/_vote_tweets.html.erb where line #1 raised: 

undefined method `each' for nil:NilClass 
Extracted source (around line #1): 

1: <% @random_hashtags.each do |hashtag| %> 
2: <div class="span4 twitter-spans-v1"> 
3:  <div id="tweet-block-v1" class="hashtag-tweet-database-container"> 
4:  <div class="tweet-block-border-v1"> 
Trace of template inclusion: app/views/hashtags/create.js.erb 

回答

1

是,:object => @random_hashtags是不一樣的給予@random_hashtags值,無需手動閱讀我認爲這是說,你可以在你的部分「_vote_tveet」(在這種情況下,有從值使用變量vote_tweet@random_hashtags必須已經啓動)。所以,如果你仍然在使用@random_hashtags並且在控制器中給它一個值,那麼你應該跳過:object => @random_hashtags在create.js.erb中的行

0

它幫助,如果我定義@random_hashtags = Hashtag.order( 「隨機()」)。限制(4)

在創建控制器。

相關問題