为什么这个复选框没有提交数据? (导轨)

时间:2015-10-08 23:12:07

标签: ruby-on-rails ruby forms

我有一个Rails应用程序,显示了具有不同参数的餐馆列表。我试图通过复选框添加过滤器,以便在用户选中复选框时,该视图仅显示餐馆被Zagat评级的帖子。

我的代码如下。为什么它不起作用?

POSTS INDEX FILE(INDEX.HTML.ERB)

<script type="javascript">
function sendData() {
    $.post( "index",{'zagat_status':$('#zagat_status'.val("")})
    .done(function(data) {
       alert('Success!');
    });
}

$(document).ready(function() {
    $('#zagat_status').change(function() {
         sendData();
    });
});
</script>
            <label>  Zagat<dd>rated</dd><input type="checkbox" name="zagat_status" value="Yes">
            </label>

POSTS CONTROLLER

class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :destroy]

  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all
    if params[:search]
      @posts = @posts.search(params[:search]).order("created_at DESC")
    end
    if params[:zagat_status].present?
      @posts = @posts.zagat_status(params[:zagat_status]).order("created_at DESC")
    end
  end

帖子模型

  scope :zagat_status, -> (zagat_status) { where zagat_status: zagat_status }

1 个答案:

答案 0 :(得分:0)

您确定要为复选框获取正确的值吗?如果你放行

raise params.to_s在索引函数的开头,是否发送了你想要的参数?这将有助于确定问题是在javascript端(最有可能)还是在rails服务器端。

我最近遇到了类似的问题 $('#zagat_status').val()

没有给我我想要的价值。尝试使用下面的代码段,在其中调用($(this).is(':checked'))以查看是否选中了复选框并将其传递给控制器​​。

$('#zagat_status').change(function(){
    var isChecked = ($(this).is(':checked'))
     $.post( "index",{'zagat_status': isChecked })
.done(function(data) {
   alert('Success!');
});
})