gpt4 book ai didi

Ruby-on-Rails:如何在不离开索引的情况下访问创建操作

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:14 24 4
gpt4 key购买 nike

尝试创建新推文以显示在我的索引中,但我不想离开该页面。我的应用程序所需的功能是跟踪来自 tweetstream 的推文,并自动将该信息传递到我的推文对象并保存到数据库。

Controller :

class TweetsController < ApplicationController

TWITTER_COMSUMER_KEY = "GfqdzJKb5kIyEnYlQuNGlg"
TWITTER_CONSUMER_SECRET = "A3Fe0IvDbhlKgowCVmV1WVLlcdYgQ8w9clrDSegCQ"
TWITTER_OATH_TOKEN = "34012133-caUYq3eiNC7Z9L9KvTgG51VgyctqVxkXP0tKIXDk0"
TWITTER_OATH_TOKEN_SECRET = "DSLA3F8BPssyEeEP2wZgQ1OJRL5kIVPZfON4GYZFw"

TweetStream.configure do |config|
config.consumer_key = TWITTER_COMSUMER_KEY
config.consumer_secret = TWITTER_CONSUMER_SECRET
config.oauth_token = TWITTER_OATH_TOKEN
config.oauth_token_secret = TWITTER_OATH_TOKEN_SECRET
end

def index
@tweets = Tweet.all
end

def new
@tweet = Tweet.new
end

def create
TweetStream.track('bed', 'morning', 'breakfast') do |status|

temp = status.text
if(temp.include? "http")
@tweet = Tweet.new(status.text)
if @tweet.save
else
render "new"
end
end
end
end

def show

end
end

Index.html.erb

<h1>Tweet Tracker</h1>

<% @tweets.each do |tweet| %>
<p><%= tweet.content %></p>
<hr />
<% end %>

最佳答案

这是 RESTful 资源结构(索引/显示/创建/编辑/销毁)的一种有趣方法,因为我们使用自动跟踪器来创建而不是任何用户输入。问题是,您的 Controller 代码仅在通过 POST 请求访问时运行(除非您弄乱了 routes.rb 以使其响应其他内容)。

在我看来最干净的解决方案是编写一个 CoffeeScript 来定期向 Controller 发送数据并显示结果。

/app/assets/javascripts/tweets.js.coffee

$ ->
setInterval ->
$.post("/tweets", "", (html)->
$("#tweets").append html)
, 1000

/app/views/tweets/create.html.erb

<p><%= @tweet.content %></p>
<br/>

为了让它正常工作,我们需要将 tweets 区域包装在一个 id="tweets"的 div 中:

/app/views/tweets/index.html.erb

<h1>Tweet Tracker</h1>

<div id="tweets">
<% @tweets.each do |tweet| %>
<p><%= tweet.content %></p>
<br/>
<% end %>
</div>

您还需要将 Controller 的创建方法中的 render "new" 替换为 return。这样,当保存到数据库失败时,不会呈现任何内容,一切都会继续,不会出现错误。

关于Ruby-on-Rails:如何在不离开索引的情况下访问创建操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15400307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com