我是rails restful web服务的新手,我正在尝试返回json转储交易的构建服务。到目前为止,当我点击http://localhost:3000/api/deals时,我的应用程序以json格式返回这些交易。现在我想在uri <div class="thumbnail-popular" style="background: url('http://images.gogoanime.tv/images/upload/Go!.Princess.Precure.full.1812487.jpg');"></div>
中添加两个必需参数(deal_id和title)和两个可选参数。验证这两个必需参数的最佳方法是什么?换句话说,我只想在有deal_id和title参数时才进行查询。假设交易模型有字段deal_id,title,description和vendor
这是我的代码
控制器
http://localhost:3000/api/deals?deal_id=2&title=book
路由
module Api
class DealsController < ApplicationController
respond_to :json
def index
@deals = Deal.all
respond_with (@deals)
end
end
end
答案 0 :(得分:1)
要验证Rails路由中查询参数的存在,可以使用:constraints
选项。因此,在您的情况下,如果您想要存在参数deal_id
和title
,您可以通过更改:
resources :deals
要:
resources :deals, :constraints => lambda{ |req| !req.params[:deal_id].blank? && !req.params[:title].blank? }
然后,在您的控制器中,您可以访问params
哈希值中的所有四个参数。
或者,如果要提供更多用户友好的错误消息,可以在控制器中进行验证。有很多方法。我可能会做这样的事情:
def action
if params[:deal_id].blank? || params[:title].blank?
flash[:warning] = 'Deal ID and title must be present'
redirect_to root_path and return
end
#rest of your code goes here
end