0

我在 有一个联系表格mysite.com/messages/new。我喜欢在我网站的所有页面上提供此表单的想法。我有一个问题。

如果我从主页提交 POST 请求/messages并且验证失败,messages/new.html.erb则将呈现(连同错误消息)。虽然我可以忍受这一点,但我更愿意渲染调用动作的模板(即home/index.html.erb)。

目前我的消息控制器中有以下内容:

def create
  @message = Message.new(params[:message])
  if @message.valid?
    MessageMailer.message_us(@message).deliver
    flash[:success] = "xthnxbai"
    redirect_to root_url
  else
    # this is where I want to change things
    render :new
  end
end 

我尝试过使用以下内容:

else
  render :template => "#{request.controller}/#{request.action}"

但这给出了:

NoMethodError (undefined method `controller' for #<ActionDispatch::Request:0xa113168>):

是否可以告诉 Rails 向我的 MessagesController 呈现发起 POST 请求的控制器和操作?

4

1 回答 1

2

猜猜在这种情况下,通过 AJAX 提交表单将为您节省培根。特别是考虑到它在 Rails 中是多么容易。

于 2013-01-16T14:58:32.533 回答