Ruby on rails 如何使用多个入口点进行RESTfull路由?
我有一个名为Project的模型,它是一个公司存储的信息集合。这家公司可以通过两种方式创建项目 第一种是标准的RESTful方式——公司进入项目索引,然后单击“新建项目”,创建后返回到索引,并显示一条flash消息 第二种方法是“快速创建”,当公司查看客户资料时,可以访问该方法。从这里,公司可以输入一些基本信息并发送给该客户创建一个项目(客户在这里自动指定) 这两个场景中的第二个场景有一个项目正在从clients/show访问。将这些数据发送到projects/create通常会将公司发送到projects/index,但我不希望这样。在这种情况下,create操作的不同之处在于某些字段的处理方式不同,重定向也不同。你建议我做什么Ruby on rails 如何使用多个入口点进行RESTfull路由?,ruby-on-rails,ruby-on-rails-3,rest,routes,Ruby On Rails,Ruby On Rails 3,Rest,Routes,我有一个名为Project的模型,它是一个公司存储的信息集合。这家公司可以通过两种方式创建项目 第一种是标准的RESTful方式——公司进入项目索引,然后单击“新建项目”,创建后返回到索引,并显示一条flash消息 第二种方法是“快速创建”,当公司查看客户资料时,可以访问该方法。从这里,公司可以输入一些基本信息并发送给该客户创建一个项目(客户在这里自动指定) 这两个场景中的第二个场景有一个项目正在从clients/show访问。将这些数据发送到projects/create通常会将公司发送到pr
谢谢 我通常使用当前URL添加隐藏的
referer
字段,然后重定向到该字段
比如说
def create
@project = Project.new params[:project]
@project.save
respond_with @project, :location => params[:referer] || [:index, :projects]
end
您可以直接从
请求
对象和基于此的fork中利用referer,类似于重定向到:返回
的工作方式
从Rails API文档的重定向到选项散列:
:back-返回发出请求的页面。
适用于从多个位置触发的表单。
重定向到的缩写(request.env[“HTTP\u REFERER”])
因此,您可以简单地执行以下操作:
def create
@project = Project.new( params[:project] )
@project.save
respond_with @project, location: get_location!
end
private
def get_location!
case request.env["HTTP_REFERER"]
# Your routing logic here.
end
如果您对此感兴趣,这也很好,而且易于进行单元测试。:)
我只想给控制器添加另一个动作,“quick_create”或其他什么。您可以使用partials和参数将表单干燥到partials,以告诉如何渲染内容……这似乎是最简单的方法
我遇到了这种半理性(或是半理性)的障碍,无法利用推荐人…我很想知道原因是什么-为什么不能利用推荐人?假装出来很简单,有些浏览器处理方式也不一样。例如,IE在某些情况下不提供有效的推荐人。这些问题很可能在这个时候就解决了,但经过多年的回避,我很难改变我的习惯。。。
context "if the user came from the regular form" do
before { controller.request.env["HTTP_REFERER"] = "regular_form_url" }
it "redirects to the index path" do
post :create
response.should redirect_to :index
end
end
context "if the user came from the quick-create form" do
before { controller.request.env["HTTP_REFERER"] = "quick_create_url" }
it "redirects to some other path" do
post :create
response.should redirect_to some_other_path
end
end