将数据从视图发送到rails中的控制器

时间:2016-09-27 00:10:33

标签: ruby-on-rails ruby ajax

我想通过ajax将一些数据从视图发送到rails中的控制器。

我有以下代码 应用程序/视图/静态/ home.html.erb

 <script type="text/javascript">
        var dummy = "testtext";
        $('#finish').click(function() {
          $.ajax( {
            url: '/finish',
            type: 'POST',
            data: dummy,
            dataType: 'text'
          });
         });
      </script>

      <body>
        <%= button_to "Finish", {:action => 'finish', :controller => 'static'}, :method => :post, id => 'finish' %>
      </body>

在 应用程序/视图/静态/ finish.html.erb

<p><%= @data %></p>

应用程序/控制器/ static_controller.rb

def finish
@data = params[:data]
end

在routes.rb

post 'finish' => 'static#finish'

我的理解是,在按钮上单击将执行ajax脚本,rails操作将存储从视图传递的数据。这似乎不起作用。我不确定我对流程的理解是否正确。

1 个答案:

答案 0 :(得分:0)

因为您在控制器中调用params [:data],所以需要在AJAX数据部分指定{data:dummy}

<script type="text/javascript">
    var dummy = "testtext";
    $('#finish').click(function() {
      $.ajax( {
        url: '/finish',
        type: 'POST',
        data: {data: dummy},
        dataType: 'text'
      });
     });
  </script>

此外,您可能希望使用以下

在控制器中响应您的AJAX调用
def finish
  @data = params[:data]
  respond_to do |format|
    format.json { insert_your_code_here }
  end
end