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

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

ただいまの
回答率

90.82%

  • Ruby

    6577questions

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

  • Ruby on Rails 4

    2353questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Ruby on railsでwebアプリ(webサービス)を作る際のセオリーについて

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 137

props

score 11

今現在、兼ねて自身が作りたいと考えていたwebサービスを作成しております。
今までチュートリアルにrailsでアプリケーションを作っていた際はほとんど単一のページ(html.erbファイルが一つ)で作成していました。しかし大体のwebサービス(webページ)は単一のページで成り立っている訳ではなく複数のページで成り立っていると思います。

ローカル環境でwebページを作成する際は
routes.rbにルーティングを記入し、ここに記載したアクション名と同名の関数をコントローラーファイルに定義し、更に同名のhtml.erbファイルを作成しページを表示すると思います。
今、自分は例えば単純にページを2つ作りたい場合、index.html.erbファイルとindex2.html.erbファイルの2つを作り、このようにコントローラー名を2つ定義してlocalhost3000にアクセスした時、コントローラー/パス のパス名を変えてページを見れるようにしております。

class ServiceController < ApplicationController
  def index
    end

  def index2
  end
end
Rails.application.routes.draw do

get 'service/index'=> 'service#index'

get 'service/index2' => 'sevice#index2'
end


しかし今はまだページが2つなのでこうやって対応できている面がありますが、これが10、30、50と数が増えてきた際、いちいちパス名とやコントローラーを定義するのは非常に非効率なのではないかと考えました。
自身で色々調べてみたのですが、単純にページを増やしたい際scaffoldを使うのも違うと思いましたし、答えが見つからず困っております。
railsでアプリケーションを開発する際、複数のページを作る際はどのように書けばいいのでしょうか。
それともこのように力技を行わなければならないのでしょうか。
分かりづらい文章で大変恐縮ですがよろしくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

Ruby on Rails は「規約に従うならば、いちいち記述しなくてよい」というポリシーがあります。
適切な命名規則に従う限り、自動的に適切な処理が行われるようになっているのです。

Rails ではコントローラーが命名規則に従っているとき、自動的にルーティングが行われ、何も記載していなくとも、
/{controller}/{method} から、Controller クラスの method メソッドが呼ばれるように(そして自動的に対応するビューの erb が出力されるように)なっています。

試しに routes.rb から index, index2 に関する記述を取り除いてみてください。それでも(適切な命名であれば)、意図したように動くはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/09 03:10 編集

    ご回答ありがとうございます。
    routes,rbの記述を取りのぞいてみたのですが、ルーティングエラーとなって表示はできませんでした。
    しかしservice_controller.rbファイルで定義したindexやindex2といったものをコメントアウトしてみるとhtml.erbの内容が双方ともレンダリングできました。
    つまり単純にhtmlをレンダリングしたい場合コントローラーファイルで定義せずともroutes.rbでURI(URL)のパスをgetし、各々のパス、アクションに対応したhtml.erbファイルを用意すればlocalhost3000にアクセスした際表示されるということが分かりました。
    重ねての質問となってしまうのですが、実際railsでwebサイトやサービスを作成する際このように一つ一つパスを取得し、アクション名を定義しhtmlファイルを紐づけてページを作成していくというのは一般的なやり方なのでしょうか?

    キャンセル

0

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう 
https://railstutorial.jp/ 
を読んで、実際に手をうごかしてサイトを作ってみることをお勧めします。

rails の基本を修得できると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.82%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    railsでの共通処理やロジックの記述場所

    お世話になります。 railsでの共通処理やロジックの記述場所を教えて下さい 例) def 日付に2月加えて返す共通関数 end def ひとつのコントローラ

  • 解決済

    ログインの失敗

    railsでログイン画面を作りました。 しかし、ログインするとホーム画面に戻ってしまい(localhost:3000)ログインできません。 これはルートの設定が間違っているとい

  • 解決済

    rails でレビューを実装したいのですがform作成でエラーが出ます。

    rails4.2.5です。 evaluationsテーブルにフォームで値を送信しようと思っているのです が、evaluations_controller.rbのstrong

  • 解決済

    railsのソースについて

    railsの勉強をしております。 勉強の一環として、ユーザーが数値を入力し、計算というボタンを押したら、別ページに数値を3倍にした結果を表示する。という事をやろうとしておりま

  • 解決済

    クリックしたリンクのリンク名を、コントーラーに値として渡すには。

    前提・実現したいこと ruby on railsで質問です。 当アプリケーションにて認証を行ったユーザーのリンク名を取得し、リンクをクリックしたら、クリックしたリンク名を文字デ

  • 受付中

    Railsのルーティング設計に関して

    初心者です。宜しくお願いします。 Railsのルーティング設計に関してご相談なのですが、簡単なブログアプリケーションみたいなのを作ろうと思っています。 そこで、

  • 解決済

    rails チュートリアル indexアクション

    前提・実現したいこと ここに質問したいことを詳細に書いてください (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが

  • 解決済

    膨大な量のページを作る手間を省きたい

    現在Railsで掲示板のようなサービスを作っていて、掲示板に投稿するときに性別、年代、地域、などのプロフィールを入力できるようになっています。 そこで投稿をプロフィール毎に分

同じタグがついた質問を見る

  • Ruby

    6577questions

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

  • Ruby on Rails 4

    2353questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。