0

我什至不确定如何以可以理解的方式提出这个问题。

基本上,我想在保存后使用 js.erb 做一些 javascript。我正在使用常规的 javascript/coffee-script 文件提交表单(如果所有字段都正确填写,则提交表单,否则表单什么也不做,只显示错误)。

我的咖啡脚本的一部分:

fieldCorrectResponse: (fields, response) ->
    if fields == correct
        $('#new_mail')[0].submit()
    else
      $('#mail_error').text('error while filling out form')

我的邮件控制器:

def create
    @mail = Mail.new(mail_params)

    if @mail.save

      #PERFORM SOME JS USING A JS.ERB
    else
      render :new
    end
END

所以我想我真正要问的是,你如何在控制器中调用 js.erb ?


在下面写了我的问题的解决方案..

4

2 回答 2

0

“做一些 javascript” 的描述性并不好。您是否想从创建操作返回一个 JSON 对象,然后可以通过您的 jquery 上的成功回调对其进行解析?或者您是否想要一个模板,其中包含由于保存操作而被调用的 javascript?

vinod 覆盖了第二种方式。确保您的路线设置正确。

如果你想返回一个可解析的 JSON 对象,那么写

render json: { some: 'json objects', should: 'go here' }

此外,不知道“邮件”是什么,如果您尝试发送应该使用操作邮件程序完成的电子邮件,并且可能作为将主模型提交到数据库的一部分完成(如果您正在创建用户并且尝试发送电子邮件,有一个方法作为用户创建的一部分发送电子邮件)。

于 2013-08-15T04:18:55.743 回答
0

您应该能够渲染js和使用create.js.erb.

请试试:

# MailsController
def create
    @mail = Mail.new(mail_params)

    if @mail.save
      respond_to do |format| 
        format.js
      end
    else
      render :new
    end
END

然后,在app/views/mails/create.js.erb.

于 2013-08-15T02:07:45.257 回答