Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RubyonRails,新的API发布和刷新页面_Javascript_Ruby On Rails_Ruby_Ajax_Web Development Server - Fatal编程技术网

Javascript RubyonRails,新的API发布和刷新页面

Javascript RubyonRails,新的API发布和刷新页面,javascript,ruby-on-rails,ruby,ajax,web-development-server,Javascript,Ruby On Rails,Ruby,Ajax,Web Development Server,我是RubyonRails新手。在我们的网站上,用户可以进行搜索,然后获得结果列表 现在我想添加查看排序结果(按价格、评级等)的功能。API进行排序,所以我所要做的就是使用新选项(即&sort=PRICE)向API发送一个新的post请求,然后它将按顺序返回结果 我的问题是我不知道怎么做,我已经尝试了按钮标签和按钮标签,如果点击并手动刷新按钮标签,它会工作,但是如果我添加多个按钮标签它不会工作 我将$sort作为全局变量(在API文档中使用默认排序值,即no_sort),因此当按下按钮时,我尝试

我是RubyonRails新手。在我们的网站上,用户可以进行搜索,然后获得结果列表

现在我想添加查看排序结果(按价格、评级等)的功能。API进行排序,所以我所要做的就是使用新选项(即&sort=PRICE)向API发送一个新的post请求,然后它将按顺序返回结果

我的问题是我不知道怎么做,我已经尝试了
按钮标签
按钮标签
,如果点击并手动刷新按钮标签,它会工作,但是如果我添加多个
按钮标签
它不会工作

我将
$sort
作为全局变量(在API文档中使用默认排序值,即no_sort),因此当按下按钮时,我尝试将该变量更改为所需名称,然后发布,这就是我看到的:

<%= button_to 'price', :controller => 'database', :action => 'getList', :method => 'post' do %>
                        <% $sort="PRICE" %>
                        <% end %>
<%= button_to 'rating', :controller => 'database', :action => 'getList', :method => 'post' do %>
                        <% $sort="QUALITY" %>
                        <% end %>
<%= button_to 'distance', :controller => 'database', :action => 'getList', :method => 'post' do %>
                        <% $sort="PROXIMITY" %>
                        <% end %>
'database',:action=>'getList',:method=>'post'do%>
'数据库',:操作=>'获取列表',:方法=>'发布'执行%>
'数据库',:操作=>'获取列表',:方法=>'发布'执行%>
我的控制器:

def getList()

    #search parameters

    destinationString = params[:poi].gsub(' ', '+')
    propertyName = params[:name].gsub(' ', '+')
    stateProvinceCode = params[:state].gsub(' ', '+')
    city = params[:city].gsub(' ', '+')

    arrival =  DateFormat(params[:start_date])
    departure = DateFormat(params[:departure])
    @arrivalDate = params[:start_date]
    @departureDate = params[:departure]


    #construct http request
    request = $gAPI_url + "/list?" \
            + "cid=" + $gCid \
            + "&apiKey=" + $gApiKey \
            + "&sort=" + $sort \
            + "&numberOfResults=" + $gNumberOfResults \
            + "&destinationString=" + destinationString \
            + "&propertyName=" + propertyName \
            + "&stateProvinceCode=" + stateProvinceCode \
            + "&city=" + city \
            + "&arrivalDate=" + arrival \
            + "&departureDate=" + departure


    response = JSON.parse(HTTParty.get(request).body)
    puts request

    # Check for EanWsError
    if response["HotelListResponse"]["EanWsError"] then
          hotelError = response["HotelListResponse"]["EanWsError"]

          #Multiple possible destination error.
        if hotelError["category"] == $gERROR_CATEGORY_DATA_VALIDATION then
              #create list of suggested destinations


              #We are not yet implementing the suggestions list functionality.
              #@destinationList = []
              #@destinationListSize = Integer(response["HotelListResponse"]["LocationInfos"]["@size"]) -1

              #(0..(@destinationListSize)).each do |i|
                #destinationInfo = response["HotelListResponse"]["LocationInfos"]["LocationInfo"][i]
                #@destinationList << Destination.new(destinationInfo)
              #end

              redirect_to '/database/errorPage'


          #No results were returned
          elsif hotelError["category"] == $gERROR_CATEGORY_RESULT_NULL then


                #TODO: Figure out what to do if no results were found.
                #      Currently sending them back to the homepage
                redirect_to '/database/errorPage'
          end

    #We got a valid response. Parse the response and create a list of hotel objects
    else

        #Our hotelListSize is subtracted by 1 because we only want up to last index
        @hotelList = []
        @hotelListSize = Integer(response["HotelListResponse"]["HotelList"]["@size"]) -1

        (0..(@hotelListSize)).each do |i|
            hotelSummary = response["HotelListResponse"]["HotelList"]["HotelSummary"][i]
            @hotelList << Hotel.new(hotelSummary)
            @hotelList[i].thumbNailUrl = "http://images.travelnow.com" + response["HotelListResponse"]["HotelList"]["HotelSummary"][i]["thumbNailUrl"]
      end

      end

  end
def getList()
#搜索参数
destinationString=params[:poi].gsub(“”,“+”)
propertyName=params[:name].gsub(“”,+“”)
stateProvinceCode=params[:state].gsub(“”,“+”)
city=params[:city].gsub(“,+”)
到达=日期格式(参数[:开始日期])
出发=日期格式(参数[:出发])
@arrivalDate=参数[:开始日期]
@出发日期=参数[:出发]
#构造http请求
请求=$gAPI_url+“/list?”\
+“cid=“+$gCid\
+“&apiKey=“+$gApiKey\
+“&sort=“+$sort\
+“&numberOfResults=“+$gNumberOfResults\
+“&destinationString=“+destinationString\
+“&propertyName=“+propertyName”\
+“&stateProvinceCode=“+stateProvinceCode”\
+“&city=“+city”\
+“&arrivalDate=“+arrival\
+“&departureDate=“+离开”
response=JSON.parse(HTTParty.get(request.body)
提出请求
#检查是否存在错误
如果响应[“HotelListResponse”][“EANWERROR”]则
HoteleError=响应[“HotelListResponse”][“EANWERROR”]
#多个可能的目标错误。
如果HoteleError[“category”]=$gERROR\u category\u DATA\u验证,则
#创建建议目的地的列表
#我们尚未实现建议列表功能。
#@目标列表=[]
#@destinationListSize=整数(响应[“HotelListResponse”][“LocationInfos”][“@size”])-1
#(0.(@destinationListSize))。每个都有|
#destinationInfo=响应[“HotelListResponse”][“LocationInfos”][“LocationInfo”][i]
#@目的论短篇
您有几个问题,但要解决主要问题,请尝试:

<%= button_to 'price', :controller => 'database', :action => 'getList', :method => 'post', :params => {:sort => 'PRICE'} %>
<%= button_to 'quality', :controller => 'database', :action => 'getList', :method => 'post', :params => {:sort => 'QUALITY'} %>
<%= button_to 'distance', :controller => 'database', :action => 'getList', :method => 'post', :params => {:sort => 'PROXIMITY'} %>
长部分
完成短部分工作后。

谢谢您的回复。我试了你的建议,但还是没有结果,页面没有刷新,当我刷新手册时,我仍然得到与以前相同的结果。请在单击某个按钮时粘贴服务器输出。实际上,我有
包装这些按钮,这显然使它们无法工作。现在,我得到了此错误“未定义方法”gsub,用于nil:NilClass提取源代码(在第91行附近):
$sort | |='CITY_VALUE'#默认排序destinationString=params[:poi].gsub('''+')propertyName=params[:name].gsub(''''+')stateProvinceCode=params[:state].gsub('''+')CITY=params[:CITY].gsub('''+'))
我不明白。当我点击按钮时,就会出现这个错误。我假设控制器中的排序声明或赋值有问题?
<%= button_to 'price', :controller => 'database', :action => 'getList', :method => 'post', :params => {:sort => 'PRICE'} %>
<%= button_to 'quality', :controller => 'database', :action => 'getList', :method => 'post', :params => {:sort => 'QUALITY'} %>
<%= button_to 'distance', :controller => 'database', :action => 'getList', :method => 'post', :params => {:sort => 'PROXIMITY'} %>
def getList()
  $sort = ['PRICE', 'QUALITY', 'PROXIMITY'].find{|s| s == params[:sort]}
  $sort ||= 'PRICE' # sort by price by default

  # your code...