我嘗試了反應和Rails。我有一個叫做「故事」的模型,有一個非常簡單的rails應用程序。React組件在Rails視圖中沒有呈現activerecord關係
我安裝了反應護欄寶石:
gem 'react-rails', '~> 1.0'
,並遵循建議的安裝過程。
我腳手架故事模型,並創建了'new'方法,以root用於我的routes.rb文件。一切正常。
我在storiescontroller持有的所有記錄從數據庫中增加了一個@stories例如我的「新」方法:
# GET /stories/new -- file: stories_controller.rb
def new
@stories = Story.all
@story = Story.new
end
在我看來,我加入這行代碼
# -- file: new.html.erb
<%= react_component('Story', { :data => @stories }) %>
,在我的JavaScript文件我有這樣的代碼:
# -- file:assets/javascripts/components/story.js.jsx
var Story = React.createClass({
displayName: 'Story',
propTypes: {
title: React.PropTypes.string,
description: React.PropTypes.node
},
render: function() {
return (
<div>
<div>Title: {this.props.title}</div>
<div>Description: {this.props.description}</div>
</div>
);
}
});
我想這應該工作。但事實並非如此。當我用這個替換視圖頁中的代碼時:
<%= react_component('Story', { :title => "my title", :description=> "my description" }) %>
然後'標題'和'描述'都正確呈現。
似乎我的視圖中的@stories實例沒有正確解析到反應組件。然後我嘗試了老式的方式
<% @stories.each do |story| %>
<div class="panel">
<h3><%= story.title %></h3>
<p><%= story.description %></p>
</div>
<% end %>
並且工作正常。所以@stories實例沒有問題。它保存所有記錄並可從new.htm.erb文件訪問。
我加載了application.js中turbolinks之後的反應文件。而與此代碼
# -- file: application.js
//= require jquery
//= require jquery_ujs
//= require foundation
//= require turbolinks
//= require react
//= require react_ujs
//= require components
//= require_tree .
$(function(){ $(document).foundation(); });
我不能在互聯網上找到了答案,所以我希望有人能幫助我與我的第一次嘗試讓反應在我的軌道環境中運行解決。