![](/img/trans.png)
[英]What's the proper way to handle geographic locales in Ruby on Rails?
[英]What's a proper way to design Ruby on Rails application with React
我正在使用帶有React的Ruby on Rails做一些項目。 我正在使用react-rails
gem。 我有一些關於如何正確設計Rails和React應用程序架構的問題。 我的問題主要是關於在Rails和React之間傳遞數據。
我知道主要有兩種方法。 第一種也是最常見的方式是Rails中的單獨API和React中的前端應用程序。 這帶來了一些利弊。 我必須開發和維護兩個獨立的應用程序,但在將來,我可以輕松地將現有的API重用於移動應用程序等其他內容。 通過這種方式,我的前端React向Rails API索取數據。
我選擇的第二種方式和方式是使用內置的Rails webpacker
, react-rails
或react-on-rails
開發monolith app。 通過這種方式,我可以簡單地在Rails控制器中獲取數據
@foo = Model.find(id)
並將其傳遞給我在視圖中的React組件
=react_component("Foo", {foo: @foo})
但是當我得到一些具有更多依賴關系的更復雜的模型時,問題就出現了。 例如,假設我有一個模型:
class Foo < ApplicationRecord
belongs_to: :user
has_many: :bar #which is some nested resources
現在我想創建一個模型Foo
的索引頁面,它將顯示所有Foo's
, user
數據並連接到它的Bar's
。 在純Rails應用程序中,我可以簡單地在控制器中@foo
,稍后在視圖中使用@foo.user.nick
。 但是當我使用react時,我需要在我的控制器中獲取所有這些信息,然后使用props
傳遞給React組件,這在我看來會造成很多混亂。
這是我的問題:在Rails和React之間傳遞數據的正確方法是什么?
最干凈的選擇就像你說要獲取控制器並使用道具傳遞。
如果你把它作為道具,最好的方法是利用Rails的as_json
方法及其可鏈接的選項:
一個例子:
@my_component_data = @foo.as_json(include: { user: { only: [:id, :name, :nick] } }
最終你可能會選擇像ActiveModelSerializers這樣的東西,但我個人更喜歡避免速度損失和增加復雜性,其他人則發誓。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.