データをDBに登録する時、viewに登録ファームがあり、それを受け取ってDBに登録する方法はわかるのですが、コントローラー内で生成された値をDBに登録する方法がわかりません。
どなたかわかる方私に教えてください。よろしくお願いいたします。
sansansandodoが👍を押しています
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答2件
0
... viewに登録ファームがあり、それを受け取ってDBに登録 ...
多分 params から 値を得て それをもとに new / save したり、create しているとおもいます。例えばこんなふうに。
def crea te @friend = Friend.new(params[:friend]) ... @friend.save ...
new や create するときのパラメタは web form からきた params[] でなくてもなんでもよいです。
comtroller 中で独自に作った変数をつかって new, create すればよいだけです。
投稿2018/09/30 08:41
編集2018/10/01 14:17総合スコア22328
0
ベストアンサー
ごめんなさい、質問の意図があまり把握できていないので、意図に添えているかわかりません。
ruby
1 2def create_data 3@title = "bar" #コントローラーで生成した適当な情報 4@hoge = Hoge.create(title: @title) #適当なモデルのtitleカラムに上で作った情報を入れてインスタンスを生成し、DBに保存。適当なインスタンス変数@hogeに格納 5 6end
投稿2018/09/28 18:35
総合スコア248
ご回答ありがとうございます。わかりにくい質問をしてしまい申し訳ございません。
例えば、
def create_data
@title = "bar"
end
の@titleをDBに登録する方法はありますか?という質問でした。
テーブルが無ければ保存場所がないので不可能かと思います。
機能としてはどのようなものを想定しておいででしょうか
controller内でURLを取得して、その値を保存しておく機能を実装したいです。その後、他のアクションにおいて保存しておいた値を使いたいです。
インスタンス変数に入れておくとか、セッションに保存するとかで実現できると思いますが、
def hoge
@string = "URL"
end
def fuga
hoge
#処理
redirect_to @string #例えば、hogeで格納したURLにリダイレクトとかみたいに使える
end
一度レスポンスしてから次のリクエストの時に参照するなら
def hoge
@string = "URL"
end
def fuga
hoge
session[:url] = @string #セッションに一時的にurlを格納
end
def index
redirect_to session[:url] unless session[url].nil? #セッションにURLがあったらそこにリダイレクト
end
単純にURLをDBに入れたいだけなら、rails g model Urlstore link:stringとか適当に作っておいて、
def hoge
Urlstore.create(link: "URL")
end
みたいに作成、保存すればいいのではないでしょうか?
丁寧な回答ありがとうございます。参考にさせていただきます。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
2018/10/01 12:25