Ruby on rails RubyonRails路由问题
我正在开发一个网站,用户可以在这个网站上出售他们活动的门票。活动门票将由促销员促销。反过来,客户需要一个唯一的url,促销员可以通过电子邮件发送给潜在客户,以便向其出售门票。因此,我必须创建一个唯一的url,其中包括促销员的唯一代码和活动id(用于跟踪销售)。我遇到的问题是如何创建这个唯一的url。活动和发起人之间有一种多对多的关系,通过一个促销表连接在一起。促销表将跟踪每个活动的促销员,并具有一个属性来存储售出的门票数量。在Promotor表中,我将存储基本信息,例如名称,以及系统将生成的唯一代码 我知道我可以创建一个命名路由,可以按id查找事件或按id查找发起人。问题是我需要在url中包含事件id以及发起人唯一代码(除非有更好的方法)。然后,我将能够编写一个查询来查找具有发起人唯一代码条件的事件 你有没有想过我该如何做到这一点?我想让我困惑的是url中有两个参数 更新:Ruby on rails RubyonRails路由问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在开发一个网站,用户可以在这个网站上出售他们活动的门票。活动门票将由促销员促销。反过来,客户需要一个唯一的url,促销员可以通过电子邮件发送给潜在客户,以便向其出售门票。因此,我必须创建一个唯一的url,其中包括促销员的唯一代码和活动id(用于跟踪销售)。我遇到的问题是如何创建这个唯一的url。活动和发起人之间有一种多对多的关系,通过一个促销表连接在一起。促销表将跟踪每个活动的促销员,并具有一个属性来存储售出的门票数量。在Promotor表中,我将存储基本信息,例如名称,以及系统将生成的唯一
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:-(