質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2305閲覧

Ruby on Railsの基本的なデータの受け渡し

testrails

総合スコア11

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/11/17 11:28

編集2017/11/17 11:37

###前提・実現したいこと
Ruby on Railsの初心者です。
Railsの入門講座にあるようなviewで件名と本文をテキストフィールドで入力し、
controllerでデータベースに保存(save)し、index.htmlで一覧を見るものを作っています。

そのデータ受け渡しが分かりません。
以下のviewのコード最下部にある乱数rを、本文であるcontentに入れたいと思っています。
その為に、text_areaではない形にしたいのですが、どうやればいいかわかりません。
text_areaで打ち込んだ文字の一部に使いたいのではなく、単純に変数をcontentに入れ、controllerに渡したいのです。
お手数ですが、教えていただけますでしょうか。

###ふわっと思っていること
controller側で乱数を作って、そのままcontentパラメーターに入れればいいのではないか
viewではそれを表示するだけで
でもそれが一般的な方法なのか分からないし、viewで実現できるならそれも知りたい

###試してダメだったコード

html

1本文: <%= f.r :content %> 2または 3本文: <%= r :content %>

###viewのコード

html

1<h1>Add New Post</h1> 2 3<%= form_for Post.new do |f| %> 4表題: <%= f.text_field :title %> 5本文: <%= f.text_area :content %> 6<%= f.submit %> 7<% end %> 8 9<!-- この乱数を本文であるcontentに入れたい --> 10<% r = Random.rand(1 .. 10) %> 11<%= r %>

###controllerのコード

ruby

1class TweetsController < ApplicationController 2 def index 3 @posts = Post.all.order("id DESC") 4 end 5 6 def new 7 end 8 9 def create 10 @post = Post.new 11 @post.title = params[:post][:title] 12 @post.content = params[:post][:content] 13 @psot.save 14 redirect_to '/posts/index' 15 end 16 17end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2017/11/17 13:00

追加する「乱数」は何のためのもので、ユーザーに見せる必要はどの程度あるものなのでしょうか。
Takahito_Ogawa

2017/11/17 14:02

Controllerのcreateメソッド内に誤字があります。@psot.save、正しくは@post.saveです。
testrails

2017/11/17 14:11

>>maisumakun 将来的にゲームを作成したいのですが、キャラクターの能力値を乱数で生成し、名前だけをユーザーが任意で付けられるようにしたいなーとか漠然と思ってました。なので、view側で乱数が表示できて、その数値がデータベースに能力値として保存できたらな、と。
testrails

2017/11/17 14:12

>>Takahito_Ogawa ご指摘ありがとうございます。確かに間違っていました。
guest

回答1

0

ベストアンサー

controller側で乱数を作って、そのままcontentパラメーターに入れればいいのではないか

viewではそれを表示するだけで
でもそれが一般的な方法なのか分からないし、viewで実現できるならそれも知りたい

Viewはコンテンツを表示するだけの役割をこなすべきだと思うので、その通りだと思います。

Controller

Ruby

1class TweetsController < ApplicationController 2 def index 3 @posts = Post.all.order("id DESC") 4 end 5 6 def new 7 @post = Post.new 8 @post.content = Random.rand(1 .. 10) 9 end 10 11 def create 12 @post = Post.new 13 @post.title = params[:post][:title] 14 @post.content = params[:post][:content] 15 @post.save 16 redirect_to '/posts/index' 17 end 18 19end

View

Ruby

1<h1>Add New Post</h1> 2 3<%= form_for @post do |f| %> 4表題: <%= f.text_field :title %> 5本文: <%= f.text_area :content %> 6<%= f.submit %> 7<% end %>

これで所望のふるまいが得られるか確認してみてください。

Viewだけで実現したいならControllerはそのままで、Viewを次のように変更します。

View

Ruby

1<h1>Add New Post</h1> 2 3<% @post = Post.new %> 4<% @post.content = Random.rand(1 .. 10) %> 5 6<%= form_for @post do |f| %> 7表題: <%= f.text_field :title %> 8本文: <%= f.text_area :content %> 9<%= f.submit %> 10<% end %>

投稿2017/11/17 13:51

編集2017/11/17 14:04
Takahito_Ogawa

総合スコア229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

testrails

2017/11/17 14:26

>>Viewはコンテンツを表示するだけの役割をこなすべきだと思うので、その通りだと思います。 やはりそうなんですね!ありがとうございます。 <% @post = Post.new %> <% @post.content = Random.rand(1 .. 10) %> この方法が一般的ではなくても、実現可能か知りたいと思っていました!やはりできるのですね。でも、controller側で設定する方が適切だというご指摘なので、これはこれで知識として覚えておこうと思います! 調べてみると、クラス変数(@@変数名)やらグローバル変数($変数名)がcontrollerとviewの間で使えそうだなと感じたので、その辺を使って更にステップアップしたいと思います。 また何かありましたら、よろしくお願いいたします。
Takahito_Ogawa

2017/11/17 15:09

> 調べてみると、クラス変数(@@変数名)やらグローバル変数($変数名)がcontrollerとviewの間で使えそうだなと感じたので、その辺を使って更にステップアップしたいと思います。 ControllerとViewの間での値の受け渡しは、インスタンス変数(@変数名)を使って行うのが普通だと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問