我正在使用Rails创建基本产品登录页面,用户可以在其中输入他们的电子邮件地址,以便在产品启动时收到通知。 (是的,有服务/宝石等可以为我做这件事,但我是编程新手,并且想自己构建它来学习rails。)如何为表单确认页面定义自定义URL?
成功提交表单后,我想重定向到我感谢用户对产品的兴趣(并鼓励他们完成一项简短的调查)的定制“感谢”页面。
目前,成功提交显示在“/ invites /:id /”例如“邀请/ 3”,我不想要,因为它暴露了已提交的邀请数。我想将所有成功的提交重定向到“/谢谢”页面。
我试图研究“导轨自定义URL”,但一直未能找到任何有效的工具。我能找到的最接近的是Stackoverflow post on how to redirect with custom routes,但并未完全理解推荐的解决方案。我也尝试阅读Rails Guide on Routes,但对此我很陌生,没有看到任何我了解允许创建自定义URL的内容。
我已经把我想显示成功的形式提交的“意见/邀请/ show.html.haml”
我的routes文件
resources :invites
root :to => 'invites#new'
我想我的谢意消息插入routes.rb:
post "/:thanks" => "invites#show", :as => :thanks
但我不知道这是否会工作,或者我会告诉控制器奥勒重定向到:感谢
我控制器(基本上香草轨,这里仅包括相关的动作):
def show
@invite = Invite.find(params[:id])
show_path = "/thanks"
respond_to do |format|
format.html # show.html.erb
format.json { render json: @invite }
end
end
# GET /invites/new
# GET /invites/new.json
def new
@invite = Invite.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @invite }
end
end
# POST /invites
# POST /invites.json
def create
@invite = Invite.new(params[:invite])
respond_to do |format|
if @invite.save
format.html { redirect_to @invite }
#format.js { render :action => 'create_success' }
format.json { render json: @invite, status: :created, location: @invite }
else
format.html { render action: "new" }
#format.js { render :action => 'create_fail' }
format.json { render json: @invite.errors, status: :unprocessable_entity }
end
end
end
仿佛显示确认会相对简单的创建一个标准的URL这似乎。任何意见如何实现这一点,将不胜感激。
这工作!谢谢! – andersr 2013-04-10 20:29:54