Rails呈现发出原始请求的操作

时间:2013-01-16 14:05:32

标签: ruby-on-rails

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

如果我从主页向/messages提交POST请求且验证失败,则会呈现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将控制器和发起POST请求的操作呈现给我的MessagesController?

1 个答案:

答案 0 :(得分:2)

在这种情况下猜猜通过AJAX提交表单将为您节省培根。特别是考虑到在Rails中可以轻松完成。