你能用React命中一个Rails控制器动作吗?

时间:2015-05-26 16:29:11

标签: javascript ruby-on-rails ruby reactjs

我想用每次点击div时从控制器生成的随机数更新值。由于该值是从Rails控制器静态下来的,这是否意味着我必须向路由提交ajax请求?

我知道通过使用一些JavaScript代码设置状态可以达到相同的效果,但我想特别知道是否可以从控制器获取此值。

请帮我填写handleClick功能。

react-rails gem用于在视图中呈现组件。

控制器

class PostsController < ApplicationController
  def index
    @num = (1..100).to_a.sample
  end
end

查看

<%= react_component("Num", { value: @num }) %>

组件

var Num = React.createClass({
  getInitialState: function() {
    return {
      value: this.props.value
    };
  },

  handleClick: function() {

  },

  render: function() {
    return (
      <div className="num" onClick={this.handleClick}>
        { this.state.value }
      </div>
    );
  }
});

1 个答案:

答案 0 :(得分:1)

简短回答:是的,您必须执行Ajax请求。

更实际地,如果您知道预期结果,则可以在等待Rails服务器响应时更新状态。然后在Ajax调用完成后。使用预设值校准返回值。如果它们相同,React的虚拟dom将足够聪明,不会更新UI。