【发布时间】:2015-07-01 09:30:39
【问题描述】:
我创建了一个简单的登录页面,用于在订阅模型中收集电子邮件地址。
在提交时,订阅被创建,用户被重定向到一个感谢页面,该页面路由到订阅/感谢。
我想将新创建的 id 传递给感谢页面,例如订阅/:id/thanks,这样我就可以访问新创建的感谢页面订阅。
【问题讨论】:
-
显示你的 routes.rb.
我创建了一个简单的登录页面,用于在订阅模型中收集电子邮件地址。
在提交时,订阅被创建,用户被重定向到一个感谢页面,该页面路由到订阅/感谢。
我想将新创建的 id 传递给感谢页面,例如订阅/:id/thanks,这样我就可以访问新创建的感谢页面订阅。
【问题讨论】:
代码未测试
在路由文件中:
resources :subscriptions do
member do
get :thanks
end
end
然后在控制器中创建一个方法来容纳感谢路由。
def thanks
# thanks code will be here
end
在您的控制器中处理数据后将用户重定向到
redirect_to thanks_subscription_path(@YourSavedObject), notice: 'Some message'
就是这样。
PS:我不喜欢这种方法。解耦比折腾变量要好一点。太多重复了。
路由说明
我从这里学到了所有的路由:http://guides.rubyonrails.org/routing.htmlFantastic source。
干杯,祝你好运。
【讨论】:
谢谢H先生!
这是我所做的,似乎效果很好。我不太了解路由,所以任何 cmets 表示赞赏:
在路线中:
resources :subscriptions
get 'subscriptions/:id/thanks' => 'subscriptions#thanks', as: 'thanks'
订阅控制器:
def thanks
@invite = Invite.new
@subscription = Subscription.find(params[:id])
end
创建动作
if @subscription.save
format.html { redirect_to thanks_path(@subscription), notice: 'Subscription was successfully created.' }
format.json { render :show, status: :created, location: @subscription }
else
【讨论】:
thanks 方法在订阅控制器中,这就是我使用member 作为路由块的原因。