0

我的索引页面上有一些按钮,它们不在表单中,它们充当地图上标记的过滤器。

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

我该怎么做这样的事情?

 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

这是正确的方法吗?

4

2 回答 2

0

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

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

于 2013-04-25T20:16:46.980 回答
0

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

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

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

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

于 2013-04-26T02:48:08.883 回答