Railsアプリを作成中の段階でTwitterapiのユーザ検索結果をTweetモデルに保存したいと考えています。
保存する値はname,screen_nameです。
new,createアクションをどのように記述すればDBに保存することができるのかわからない状態です。
controller
1class TweetsController < ApplicationController 2 def new 3 @user = [] 4 client = Twitter::REST::Client.new do |config| 5 # 事前準備で取得したキーのセット 6 config.consumer_key = ENV["TWITTER_API_KEY"] 7 config.consumer_secret = ENV["TWITTER_API_SECRET"] 8 config.access_token = ENV["TWITTER_ACCESS_TOKEN"] 9 config.access_token_secret = ENV["TWITTER_ACCESS_SECRET_TOKEN"] 10 end 11 @result = client.user(params[:screen_name]) 12 tweet = Tweet.new(read(@result)) 13 @user << tweet 14 end 15 16 def create 17 @result = Tweet.save 18 19 end 20private 21 22 def read(result) 23 screen_name = result['screen_name'] 24 name = result['name'] 25 { 26 screen_name: screen_name, 27 name: name, 28 } 29 30 end 31end
tweets/new.html.erb <div class='content'> <div id="search-box"> <%= form_tag('/tweets/new', method: :get) do %> <%= text_field_tag :screen_name, nil, name: "screen_name", placeholder: "キーワードを打ち込んでください", style: "width: 200px;"%><button title="検索" type="submit">検索</button> <% end %> </div> <div id='tweet_list'> <% if @result.present? %> <h2>検索結果</h2> <ul> <div class="list"> <li>スクリーンネーム名:<%= @result.screen_name %> </li> <li>氏名:<%= @result.name %> </li> </ul> </div> <% end %> <%= form_tag(tweets_path) do %> <%= hidden_field_tag :screen_name, @result.screen_name %> <%= submit_tag 'save' %> <% end %> </ul> </div>
恐れ入りますがもしわかる方がいたらアドバイスをいただけないでしょうか。
よろしくお願いします。
[追記]
schema.rb create_table "tweets", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name" t.string "screen_name" t.datetime "created_at", null: false t.datetime "updated_at", null: false end
[追記]
tweets_controller.rb class TweetsController < ApplicationController def new @user = [] client = Twitter::REST::Client.new do |config| # 事前準備で取得したキーのセット config.consumer_key = ENV["TWITTER_API_KEY"] config.consumer_secret = ENV["TWITTER_API_SECRET"] config.access_token = ENV["TWITTER_ACCESS_TOKEN"] config.access_token_secret = ENV["TWITTER_ACCESS_SECRET_TOKEN"] end @result = client.user(params[:screen_name]) tweet = Tweet.new(read(@result)) @user << tweet end def create @result = Tweet.new(tweet_params) @result.save end private def read(result) screen_name = result['screen_name'] name = result['name'] { screen_name: screen_name, name: name, } end def tweet_params params.require(:tweet).permit(:screen_name,:name) end end
tweets/new.html.erb <div class='content'> <div id="search-box"> <%= form_tag('/tweets/new', method: :get) do %> <%= text_field_tag :screen_name, nil, name: "screen_name", placeholder: "キーワードを打ち込んでください", style: "width: 200px;"%><button title="検索" type="submit">検索</button> <% end %> </div> <div id='tweet_list'> <% if @result.present? %> <h2>検索結果</h2> <ul> <div class="list"> <li>スクリーンネーム名:<%= @result.screen_name %> </li> <li>氏名:<%= @result.name %> </li> </ul> </div> <% end %> <%= form_tag(tweets_path) do %> <%= hidden_field_tag :screen_name, @result.screen_name %> <%= hidden_field_tag :name, @result.name %> <%= submit_tag 'save' %> <% end %> </ul> </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/31 06:44
退会済みユーザー
2021/05/31 11:25
退会済みユーザー
2021/06/01 00:43