如何创建另一个控制器操作以在rails中创建对象?

时间:2010-05-16 01:41:15

标签: ruby-on-rails controller action

我有一个名为Contact_Email的模型。当电子邮件模板通过ActionMailer发送到特定联系人时,作为“创建”操作的一部分,它会通过.save发送它。

但是,我想创建一个“跳过”操作,它也会创建一个Contact_Email,但不会发送一个ActionMailer并允许我以不同的方式设置状态。

我想创建一个单独的操作,因为我想让它响应一个remote_for_tag,这样我就可以有一个ajax按钮表示它已被“跳过”:

这是我尝试的内容,但是当它创建一个Contact_Email时,当我想返回并再次查看所有联系人时,我最终收到错误。

  def skip
    @contact_email = ContactEmail.new
    @contact_email.contact_id = params[:contact_id]
    @contact_email.email_id = params[:email_id]

    @contact_email.status = "skipped"

    if @contact_email.save
      flash[:notice] = "skipped email"
      redirect_to contact_emails_url
    end
  end

1 个答案:

答案 0 :(得分:0)

嗯,您的代码似乎没问题,只是一些事情。

  • 你没有其他声明,如果你的话 @contact_email未保存?

  • 你绝对不应该单独指定所有参数。在视图中使用contact_email和 控制器中@contact_email = ContactEmail.new(params[:contact_email])。虽然单独分配“跳过”是可以的

  • 正确定义路线。在这种情况下 map.resources :contact_emails, :member => {:skip => :post} 一切都应该没问题