Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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
Ruby on rails RubyonRails路由问题_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails RubyonRails路由问题

Ruby on rails RubyonRails路由问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在开发一个网站,用户可以在这个网站上出售他们活动的门票。活动门票将由促销员促销。反过来,客户需要一个唯一的url,促销员可以通过电子邮件发送给潜在客户,以便向其出售门票。因此,我必须创建一个唯一的url,其中包括促销员的唯一代码和活动id(用于跟踪销售)。我遇到的问题是如何创建这个唯一的url。活动和发起人之间有一种多对多的关系,通过一个促销表连接在一起。促销表将跟踪每个活动的促销员,并具有一个属性来存储售出的门票数量。在Promotor表中,我将存储基本信息,例如名称,以及系统将生成的唯一

我正在开发一个网站,用户可以在这个网站上出售他们活动的门票。活动门票将由促销员促销。反过来,客户需要一个唯一的url,促销员可以通过电子邮件发送给潜在客户,以便向其出售门票。因此,我必须创建一个唯一的url,其中包括促销员的唯一代码和活动id(用于跟踪销售)。我遇到的问题是如何创建这个唯一的url。活动和发起人之间有一种多对多的关系,通过一个促销表连接在一起。促销表将跟踪每个活动的促销员,并具有一个属性来存储售出的门票数量。在Promotor表中,我将存储基本信息,例如名称,以及系统将生成的唯一代码

我知道我可以创建一个命名路由,可以按id查找事件或按id查找发起人。问题是我需要在url中包含事件id以及发起人唯一代码(除非有更好的方法)。然后,我将能够编写一个查询来查找具有发起人唯一代码条件的事件

你有没有想过我该如何做到这一点?我想让我困惑的是url中有两个参数

更新:

map.buy_ticket 'buy_ticket/:id_1/:id_2',
 :controller => :events,
 :action => :buyTicket,
 :id_1 => /\d+/,
 :id_2 => /[a-z]+[0-9]+/i

你可以在自己的问题中找到答案。当我打开这个问题的共享链接时,我得到的是:

http://stackoverflow.com/q/7102231/293686

数字7102231是您的问题id,293686是我的用户id,因此,当我在其他地方分享此问题时,您知道是我做的,这与您尝试做的是一样的,只需创建一个同时包含ID的路由,您就完成了。

您可以手动创建几乎任何格式的路由。在您的
路由中类似这样的内容。rb

match '/ticket/:promoter_id:/:event_id' => 'controller#method', :via => :get, :as => :route_name
然后,当调用
方法
时,您的
参数
中将有
:promotor\u id
:event\u id
。这还将为您提供
route\u name\u path
route\u name\u url
帮助程序

当然,
车票
管制员
方法
:路线名称
只是用于演示的占位符


有更多详细信息。

您只需创建一个非资源路由:

get 'event/:id/promotion/:unique_code' => 'event#promotion', :as => 'event_promotion'

url将为
event/32/promotion/AEBCDE
,事件id为32,促销代码为“AEBCDE”

注意:这些路由是针对Rails 3的。我可能应该先问一下您使用的是什么版本:-)

促销是活动和促销员之间的联接表吗?如果是这种情况,您可以简单地使用促销资源来跟踪这两种情况

如果不是这样,那么路由中的多个参数是一个简单的问题,可以通过几种方式处理

您可以嵌套资源,例如

resources :events do
  resources :promotions
end

# which would result in urls like /events/:event_id/promotions/:id
或者你也可以自己绘制地图

get "/events/:event_id/promos/:promoter_code", :to => "events#show"

# Which would manually map the route to events_controller#show, passing along your 
# event id and a unique promoter code.  Just an example, but you get the idea.

我更新了我的帖子。底部的代码是我如何设置的?是的,确实如此,但是请在你的URL中使用:promotor\u id和:event\u id,这样代码就有了很好的文档记录。恐怕更新就是答案。这是使用Rails 3引入的新路由DSL:-(