1

作为前言,尽管我还是新手,但我已经完成了一些教程(即 Michael Hartl 的)。原谅任何模糊的术语。

我正在尝试在 Rails 4 中构建一个简单的应用程序,它执行以下操作:

用户登录到应用程序(当前使用登录与 Twitter 链接和路由)

get "/auth/:provider/callback" => "sessions#create"
get "/signout" => "sessions#destroy", :as => :signout

一旦<% if current_user %>是真的,我让视图呈现一个部分,其中将有一个简单按钮列表。当用户单击按钮时,我希望应用程序代表 current_user 发送预设字符串。理想情况下,我会在 ruby​​/rails 中完成这一切。

这些按钮功能是我挂断电话的地方。我已经阅读了很多文件,但似乎有很多相互矛盾的旧答案。这是我认为最接近的快速列表,尽管没有明确说明从视图中的简单按钮/链接发送推文:

有些人需要控制器、更健壮的 oauth 设置(我已经捆绑安装并连接到 dev.twitter 应用程序,但除了键之外没有充实),以及其他任何东西。它让我转过身来,我还不够好,无法综合所有信息。任何帮助和指导都会很棒。以下是应用程序中可能有用的其他一些文件。

class SessionsController < ApplicationController

def create
  auth = request.env["omniauth.auth"]
  user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
  session[:user_id] = user.id
  redirect_to root_url, :notice => "Hi!"
end

def destroy
  session[:user_id] = nil
  redirect_to root_url, :notice => "Bye!"
end
end

还有omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, '_priv', '_priv'
end
4

1 回答 1

0

哎呀!我是第二个链接(RichOnRails)的作者。您是否看过教程中包含的示例应用程序?它几乎完全符合您的要求。如果推文是硬编码的,您可以通过几种不同的方式来处理它。如果你看一下 tweets 控制器,你会发现它带有一个名为“message”的参数。传递给该 create 方法的任何消息都将以当前用户的身份发推文。

    def create
      current_user.tweet(twitter_params[:message])
    end

最简单(但不一定是最好)的方式来调整它以满足您的需求是为每条推文设置一个表单,并为您希望发布的消息创建一个隐藏字段。该按钮成为该特定表单的提交(您可以添加 remote: true 如果您想保持页面不刷新,然后使用一些 javascript 来更新 UI 元素)。希望这可以帮助。

于 2014-01-08T15:55:58.377 回答