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

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

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

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

818閲覧

ruby on rails + react の環境で、URLに「#」が含まれてしまう

masa123

総合スコア7

Ruby on Rails

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/07/28 15:45

使用している言語・ライブラリ

ruby on rails react react-router-dom

解決したいこと
・URLに「#」が含まれないようにしたい

発生している現象など
・localhost:3000 に アクセスすると localhost:3000/#/にリダイレクトする(画面表示は問題ない)
・article側も localhost:3000/#/articles にはアクセスできる
・直打ちで localhost:3000/articles に アクセスすると、javascript/components/App.jsxのSwitchパスを認識せず、railsのルートチェックでそのパスはないエラー画面に遷移してしまう
(javascript/components/App.jsxのNavigationにHomeとArticlesのリンクがあります)

ソース一部抜粋
routes.rb

Rails.application.routes.draw do root to: 'pages#index' namespace :api do resources :articles end end

pages/index.html

<div id="root"></div> <%= javascript_pack_tag 'application' %>

javascript/packs/application.jsx

import React from 'react'; import ReactDOM from 'react-dom'; import App from '../components/App'; import './stylesheets/app.css' document.addEventListener("DOMContentLoaded", function(event) { ReactDOM.render(<App />, document.getElementById('root')); });

javascript/components/App.jsx

class App extends Component { render() { return ( <div className="App"> <div className="init">init</div> <Router> <div className="container"> <Navigation /> <Main /> </div> </Router> </div> ); } } const Navigation = () => ( <nav className="navbar navbar-expand-lg navbar-dark bg-dark"> <ul className="navbar-nav mr-auto"> <li className="nav-item"><NavLink exact className="nav-link" activeClassName="active" to="/">Home</NavLink></li> <li className="nav-item"><NavLink exact className="nav-link" activeClassName="active" to="/articles">Articles</NavLink></li> </ul> </nav> ); const Main = () => ( <Switch> <Route exact path="/" component={Home} /> <Route exact path="/articles" component={ArticleList} /> <Route exact path="/articles/new" component={ArticleAdd} /> <Route exact path="/articles/:id" component={ArticleInfo} /> <Route exact path="/articles/:id/edit" component={ArticleEdit} /> </Switch> );

javascript/components/Home.jsx

import React from 'react'; const Home = (props) => { return ( <div className="jumbotron"> <h1>Home Page</h1> </div> ); } export default Home;

URLに「#」を含まないようにすることは可能なのでしょうか?

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。

BrowserRouterとHashRouter2種類あるようで、BrowserRoterに変更することで解決しました。
https://qiita.com/ShinKano/items/541050c36e08e78a5176

投稿2020/07/28 16:48

masa123

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問