【问题标题】:rails: Pre-fill a form with users image imported from oauth-twitterrails:使用从 oauth-twitter 导入的用户图像预填充表单
【发布时间】:2016-03-27 00:10:24
【问题描述】:

所以我有一个网络应用程序可以让用户注册 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 检索用户图像的用户模型的一部分: 用户.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

我在视图中这样称呼用户图像:

<%= image_tag user.image %>

但问题是我如何将用户图像上传到个人资料表单:

我有:app/profile/views/_form.html.erb

<%= f.file_field :image %>

如果他不想从其 Twitter 个人资料中上传不同的个人资料图片,我该如何欺骗这个 f.file_field 以自动导入 users.image?

【问题讨论】:

    标签: ruby-on-rails paperclip twitter-oauth


    【解决方案1】:

    你真的不需要这样做。如果您查看文档,Twitter 会提供指向个人资料图片的链接...

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

    将 URL 存储在用户记录中,如果您没有用户上传的图像可用,则使用该 url 显示图像。

    您可以在每次 oAuth 登录时将其刷新为最新的 URL,这样您就可以始终显示用户的最新 Twitter 个人资料图片。

    编辑

    所以,在你的 User 模型中创建一个字段来存储 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 中的一个可用字段,因此我对 auth 对象中的 info 属性的内容不持肯定态度...您可能需要确认图像 url 可通过检查对象获得...将其转储到记录器或使用 pry

    【讨论】:

    • 嗨,史蒂夫,感谢您的回答。这是一个很好的选择,你是对的。我不确定如何从 url 显示图像?有什么想法可以让我走上正轨吗?
    • 能否贴出基于oAuth检索用户记录的代码?
    • 当然@SteveTurczyn 我用更多信息编辑了我的问题。感谢您的宝贵时间。
    • 我在回答中添加了更多信息,希望对您有所帮助。
    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多