我的索引页面上有一些按钮,这些按钮不在表单中,可以作为地图上标记的过滤器。
我试图将过滤器选项作为参数发布到我的索引操作中。
我该怎么办?
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
这是正确的方法吗?
答案 0 :(得分:0)
尝试向表单添加2个隐藏字段,其名称等于filter1和filter2(因此表单将它们传递给您的控制器操作。对每个按钮使用onClick事件来更新相应的隐藏字段值,如果需要则切换值你可以将隐藏字段默认为0或false或任何你想要的。
然后,在您的控制器操作中检查过滤器变量的值。
答案 1 :(得分:0)
您的索引操作路径非常奇怪。
/index.html.erb
是索引视图的文件名,不应以这种方式使用。
要指向该操作,您必须使用路径路径。
打开终端并运行rake routes
并检查索引操作的正确路由。
所有路线都在/config/routes.rb
我想你应该看看这个: http://guides.rubyonrails.org/routing.html