Rails:确保在Controller中收到来自jQuery的$ .post作为format.json

时间:2012-04-12 20:18:14

标签: javascript ruby-on-rails ajax controller response

我有一个尝试发布数据的jQuery脚本:

$.post({
    $('div#location_select').data('cities-path'),
    { location_string: $('input#city_name').val() },
});

这有效,但由于某种原因,服务器将其作为HTML请求而不是JS请求接收。是什么赋予了?这是我的控制器中的响应块:

if @city.save
    respond_to do |format|
        format.html { redirect_to @city }
        format.json { render :json => @city, :status => :ok }
    end
else
    respond_to do |format|
        format.html { render :new }
        format.json { render :json => { :error => "Incorrect location format, please input a city and state or country, separated by a comma." }, :status => :unprocessable_entity }
    end
end

如何确保Ajax请求到达Controller并由format.js响应者处理?


更新:当我从$.post更改为$.ajax并明确定义其工作的数据类型时:

$.ajax({
  type: 'POST',
  url: $('div#location_select').data('cities-path'),
  data: { location_string: $('input#city_name').val() },
  dataType: 'json'
});

1 个答案:

答案 0 :(得分:3)

您是否通过routes.rb中的路由传递格式?

"controller/action/(.:format)"