【发布时间】:2013-04-08 15:49:49
【问题描述】:
(我已将最初属于这篇文章的第二个问题分解为a separate post)
我正在使用 Rails 创建一个产品登录页面,用户可以在其中输入他们的电子邮件地址,以便在产品发布时收到通知。 (是的,有服务/宝石等可以为我做这件事,但我是编程新手,想自己构建它来学习 Rails。)
在提交表单时,如果出现错误,应用程序当前会重定向到“/invites” 我想在与原始表单相同的页面/URL 上显示错误消息? (在我的例子中,表单位于根目录,而错误消息显示在“/invites”)
我已经阅读了Rails Guide on Routes 和许多关于处理表单错误的 stackoverflow 帖子,我发现没有任何东西似乎可以回答我的问题。
更新:根据@rovermicrover 的回复,我想澄清一下,虽然我对 Ajax 解决方案持开放态度,但我可以刷新显示错误消息的页面。 (我无法获得 @rovermicrover 的建议以按预期运行 - 请参阅下面我对该解决方案的回复以了解更多详细信息。)
我做了什么:
邀请模特:
class Invite < ActiveRecord::Base
attr_accessible :email
validates :email, :presence => {:message => "Please enter an email address."}
end
我的路线文件:
SuggestionBoxApp::Application.routes.draw do
root to: 'invites#new'
resources :invites
end
这就是我在 Invites 控制器中的内容(我只包含了我所引用的操作:新建、创建、显示 - 它基本上是 Rails 可能生成的默认操作):
class InvitesController < ApplicationController
def show
@invite = Invite.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @invite }
end
end
def new
@invite = Invite.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @invite }
end
end
def create
@invite = Invite.new(params[:invite])
respond_to do |format|
if @invite.save
format.html { redirect_to @invite }
format.json { render json: @invite, status: :created, location: @invite }
else
format.html { render action: "new" }
format.json { render json: @invite.errors, status: :unprocessable_entity }
end
end
end
end
如果我可以提供任何其他信息来帮助回答这个问题,请告诉我。谢谢!
【问题讨论】:
标签: ruby-on-rails forms url