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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

解決済

2回答

282閲覧

ruby: module(名前空間)の使い方

rails_ruby

総合スコア87

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/06/07 04:25

ruby

1class FullName 2 3 def name 4 first_name = 'taro' 5 last_name = 'sasaki' 6 Hoge::Sample.new(first_name,last_name) 7 @mynameをview画面に表示させたい。 8 @myname = Hoge::Sample.new(first_name,last_name) 9 end 10end 11 12module Hoge 13 class Sample 14 def initialize(first_name,last_name) 15 @first_name = first_name 16 @last_name = last_name 17 end 18 19 def key(first_name,last_name) 20 @first_name + @last_name 21 end 22 end 23end 24fullname = FullName.new.key 25puts fullname.name 26

やりたいこと

コントローラーで処理を書きすぎるとfatコントローラーになり、見栄えがよくないらしいので、ロジックをモジュールにまとめたい。

頑張ってみたところ

本来、このような処理だけなら名前空間を使わなくもいいのですが勉強がてらに名前空間を使った書き方をしています。

困っているところ

頑張ってそれっぽくは書いてみたのですが、案の定、引数が足りないと怒られてしまいました、、
この場合、どのようにすれば@mynameに処理結果が代入されるのかご教示いただけてたら幸いです。

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

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

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

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

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

maisumakun

2019/06/07 04:37

最後の「fullname=」以下の行は、どこに書いていますか?
rails_ruby

2019/06/07 04:42

最後の行は、コンソールで確かめるために追記したコードでrailsのコントローラーには存在しないコードです。紛らわしくて申し訳ございません。
asm

2019/06/07 04:49

「やりたい」と仰ってる事と「実際にやっている」事と「やっている」と仰っている事がぐちゃぐちゃで何がしたいのか分かりません。 FullNameクラスがコントローラーなのでしょうか? > FullName.new.key > puts fullname.name どちらも明らかに間違いだという事は説明が必要なのでしょうか・・・?
rails_ruby

2019/06/07 04:54

最後の行は2行は、よく理解しないまま書いたので間違っているだろうなという認識でnameメソッドを呼び出すために書きました。
guest

回答2

0

ベストアンサー

mixinを使うのはどうでしょうか?
ref

classには状態だけ持たせて振る舞いは全部moduleにさせてあげるとロジックが分けられそうです

module Hoge def fullname "#{@first_name} #{@last_name}" end end class Human include Hoge def initialize @first_name = 'taro' @last_name = 'sakaki' end end human= Human.new puts human.fullname

投稿2019/06/07 07:15

t_kusakabe74

総合スコア549

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

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

0

ruby

1class FullName 2 3 def name 4 first_name = 'keien' 5 last_name = 'nishikawa' 6 Hoge::Sample.new(first_name,last_name).key 7 end 8end 9 10module Hoge 11 class Sample 12 def initialize(first_name,last_name) 13 @first_name = first_name 14 @last_name = last_name 15 end 16 17 def key 18 @first_name + @last_name 19 end 20 end 21end 22fullname = FullName.new 23puts fullname.name

上記のコードでエラー取れました。
ほかに書き方があればご教示いただけると幸いです。

投稿2019/06/07 05:42

rails_ruby

総合スコア87

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問