将ajax中的参数发布到我的控制器?

时间:2013-04-25 20:08:58

标签: javascript ruby-on-rails jquery

我的索引页面上有一些按钮,这些按钮不在表单中,可以作为地图上标记的过滤器。

我试图将过滤器选项作为参数发布到我的索引操作中。

我该怎么办?

 function filterchanged()
  {

  $.post('/index.html.erb', { filter1: 'value1', filter2: 'false' }, function(result) {
      alert('successfully posted filter1=value1&key2=filter2 to index.html.erb');
    });
   ....
}

我的索引控制器操作如下所示:

 def index

      if params.has_key?(:filter1) 
        if params[:filter2]
          @posts = Post.typeA
        else
          @posts = Post.typeB
      end

      else 
        @posts = Post.all
      end

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end

这是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

尝试向表单添加2个隐藏字段,其名称等于filter1和filter2(因此表单将它们传递给您的控制器操作。对每个按钮使用onClick事件来更新相应的隐藏字段值,如果需要则切换值你可以将隐藏字段默认为0或false或任何你想要的。

然后,在您的控制器操作中检查过滤器变量的值。

答案 1 :(得分:0)

您的索引操作路径非常奇怪。 /index.html.erb是索引视图的文件名,不应以这种方式使用。

要指向该操作,您必须使用路径路径。

打开终端并运行rake routes并检查索引操作的正确路由。 所有路线都在/config/routes.rb

中设置

我想你应该看看这个: http://guides.rubyonrails.org/routing.html