[英]Rails routing and http requests to application
我希望交付控制器接收类似于以下内容的URL参数:
https://www.xxxxx.com/messages/delivery?id=ones1sbn&type=1
我在MessagesController
.delivery
动作如下所示:
def delivery
sent_message = SentMessage.find_by_ref(params[:id])
if params[:type] == 1
sent_message.delivery = "Delivered"
sent_message.save()
elsif params[:type] == 2
sent_message.delivery = "Delivery Failure"
sent_message.save()
else
sent_message.save()
end
end
然后路由条目是
resources :messages do
collection do
get 'delivery'
end
end
我无法从传入的HTTP请求中接收信息的原因可能是什么?
消息控制器中的过滤器是
before_filter :authenticate_user!, :except => [:delivery, :show]
load_and_authorize_resource :except => [:delivery, :show]
进行此操作的耙路
delivery_messages GET /messages/delivery(.:format) messages#delivery
全部更新之后,现在是错误。
Template is missing
Missing template messages/delivery, application/delivery with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :slim, :arb]}. Searched in: * "/var/www/html/webapp/app/views" * "/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.6.0/app/views" * "/usr/local/lib/ruby/gems/1.9.1/gems/kaminari-0.14.1/app/views" * "/usr/local/lib/ruby/gems/1.9.1/gems/devise-3.1.0/app/views"
模板已添加,但仍然没有来自http请求的更新
使用get
代替match
,如下所示:
get 'messages/delivery' => 'messages#delivery'
更新
根据您的评论,听起来您的routes.rb文件中有一条宁静的资源路径,该路径在到达get
传递行之前首先与URL匹配。 大概是resources :messages
。
正如我在评论中所说的那样,请记住,路由匹配将按照它们在该文件中出现的顺序进行检查。 您可以将get
放在resouces
线上方,或尝试以下操作:
resources :messages do
collection do
get :delivery
end
end
那应该将messages/delivery
映射到您的MessagesController
的:delivery
操作。 做rake routes
进行验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.