2016-09-14 19 views
5

Bây giờ tôi đang tạo ứng dụng React ở trên ứng dụng Ruby on Rails (với đá quý phản ứng đường ray) bằng cách sử dụng browserify-rails để biên dịch các tệp js.Làm thế nào để sử dụng React Router trên bộ định tuyến Rails (không sử dụng gem phản ứng)?

Vì vậy, tôi đã cố gắng cho chúng tôi react-router để cấu hình bộ định tuyến của ứng dụng

Đây là main.js tôi

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Router, Route } from 'react-router'; 
import { browserHistory } from 'react-router'; 

/*Import Component*/ 

import DashBoard from './components/dashboard'; 
import Group from './components/dashboard'; 

/* 
* 
* Routes 
* 
* */ 

var routes = (
    <Router history={browserHistory}> 
     <Route path="/" component={DashBoard}/> 
     <Route path="/group" component={Group}/> 
    </Router> 
); 

ReactDOM.render(routes , document.querySelector('#main')); 

Nhưng khi tôi đi đến

http://my.app.dev/group 

tôi đã

No route matches [GET] "/group" (From Rails) 

Vì vậy, làm thế nào tôi có thể sửa lỗi này và làm cho Router React trên đầu trang Rails router?

Cảm ơn!

Trả lời

15

Nếu bạn muốn chuyển hướng tất cả các yêu cầu của bạn để trang duy nhất, đó là dễ dàng:

# config/routes.rb 

root 'dash_board#index' 
get '*path', to: 'dash_board#index' 

Nếu Rails sẽ làm cho bạn Phản ứng thành phần trên trang chỉ mục Trang tổng quan #, Phản ứng của router sẽ chặn nó từ đó.

+0

Đây có phải là phương pháp hay không? Sau đó bạn có thực hiện tất cả các hành động không phải html và xử lý tất cả định tuyến trong phản ứng không? Chỉ cần cố gắng tìm hiểu mục đích của việc định tuyến phản ứng, cảm ơn! –

+0

Có lộ trình đại diện "cấp một" có thể giải quyết các vấn đề với một số đá quý. Những gì bạn có thể làm là để gắn kết ứng dụng của bạn, ví dụ trong một không gian tên. Ví dụ: https: // yourdomain/a. Nó xấu hơn nhưng an toàn hơn. – Daniel

Các vấn đề liên quan