2015-12-20 33 views
0

所以我有一個web應用程序,讓用戶使用twitter註冊。所以有個人資料圖片&名稱與其用戶帳戶相關聯。rails:從oauth-twitter導入的用戶圖像預填充表單

他們也可以創建配置文件(另一個模型),在這些配置文件中,他們可以填寫名稱,照片等。

我成功預填從用戶名稱的名稱域在Twitter這樣的:

在我profiles_controller.rb

def new 
@profile = Profile.new :twitter => current_user.name 
end 

我想要做的就是導入用戶圖片(從twitter導入)在這個表格內。

所以我嘗試:

def new 
    @pin = Pin.new :twitter => current_user.name, :image => current_user.image 
    end 

但是,所有我在形式得到的是一個破碎的圖像預覽。

由於我使用回形針在我的應用程序上傳圖像,有沒有辦法將Twitter圖像傳輸到表單內的回形針?我不知道該怎麼做。任何幫助將是可愛的讚賞。

編輯:

這裏就是我從Twitter的Oauth檢索用戶像我的用戶模型的一部分: User.rb

def self.from_omniauth(auth) 
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 
     user.provider = auth.provider 
     user.uid = auth.uid 
     user.name = auth.info.nickname 
     user.image = auth["info"]["image"].sub("_normal", "") 
    end 
    end 

我所呼叫的用戶圖像像這樣我的views:

<%= image_tag user.image %> 

但問題是我怎樣才能將用戶圖像上傳到配置文件的形式:

我:應用程序/配置文件/視圖/ _form.html.erb

<%= f.file_field :image %> 

我怎麼能欺騙這個f.file_field自動導入users.image如果他不希望uplaod一個不同的個人資料圖片形成其twitter個人資料

回答

0

你並不需要這樣做。 Twitter提供的鏈接輪廓影像,如果選中的文件...

"profile_image_url": 
     "http://a0.twimg.com/profile_images/2284174872/7df3h38zabcvjylnyfe3_normal.png" 

存儲在用戶記錄中的URL,並使用URL來顯示圖像,如果你沒有用戶上傳可用的圖像。

您可以在每次oAuth登錄時將其刷新到最新的URL,這樣您將始終顯示用戶的最新Twitter個人資料圖像。

編輯

所以,在您的用戶模型存儲Twitter圖片的URL創建一個字段...

rails g migration AddTwitterImageToUser twitter_image.string 
rake db:migrate 

填充字段,當你通過Twitter登錄...

def self.from_omniauth(auth) 
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 
     user.provider = auth.provider 
     user.uid = auth.uid 
     user.name = auth.info.nickname 
     user.twitter_image = auth.info.profile_image_url 
    end 
    end 

然後顯示...

<% if user && user.twitter_image.present? %> 
    <img src="<%= user.twitter_image %>" > 
<% end %> 

我沒有親自了解「暱稱」是Twitter的API中可用的領域,所以我不看好info內容auth對象中的屬性...您可能想要確認圖像URL是否可以通過檢查對象...將其轉儲到記錄器或使用pry

+0

嘿史蒂夫,謝謝你的回答。這是一個很好的選擇,你是對的。我不知道如何可以從網址顯示圖像?任何想法讓我走上正軌? – zacchj

+0

您可以將代碼發佈到基於oAuth檢索用戶記錄的位置嗎? – SteveTurczyn

+0

當然@SteveTurczyn我用更多的信息編輯了我的問題。謝謝你的時間。 – zacchj