Rails在编辑记录和创建时发送事件?

问题描述:

我在我的控制器下面的代码:Rails在编辑记录和创建时发送事件?

# GET /kases/1/edit 
    def edit 
    @kase = Kase.find(params[:id]) 
    respond_to do |format| 
     format.html { render :layout => 'kaseshow'} # show.html.erb 
     format.xml { render :xml => @kase } 
     format.pdf { render :layout => false } 
    end 
    end 

    # POST /kases 
    # POST /kases.xml 
    def create 
    @company = Company.find(params[:kase][:company_id]) 
    @kase = @company.kases.new(params[:kase]) 

    if @kase.save 
     UserMailer.deliver_makeakase("[email protected]", "Highrise", @kase) if params[:sendtohighrise] 
     UserMailer.deliver_makeakaseteam("[email protected]", "Highrise", @kase) if params[:notify_team_of_creation] 
     @kase.create_freeagent_project(current_user) if params[:send_to_freeagent] 

     redirect_to(@kase) 

     #flash[:notice] = 'Case was successfully created.' 
     flash[:notice] = fading_flash_message("Case was successfully created.", 5) 
     else 
     render :new 
     end   
    end 

我试图使它所以如果用户编辑的情况下,然后选择发送到希捷FreeAgent tickbox:

@kase.create_freeagent_project(current_user) if params[:send_to_freeagent] 

那么情况对于Freeagent(在线会计软件)感到不满。我并不担心重复处理,因为如果情况已经存在于Freeagent中,那么用户不需要重新发送它。

这可能吗?

你的'更新'方法在哪里?只有当您加载数据并呈现用户将看到的编辑记录的页面时,才会调用编辑。当在该页面上单击保存/更新/提交时,它应该调用控制器中的'update'方法。所以,你应该能够把同样的进线“更新”方法的,如果块的真实状况,看起来是这样的:

if @kase.update_attributes(params[:kase]) 
    #your code would go here 
    @kase.create_freeagent_project(current_user) if params[:send_to_freeagent] 
    #the rest of the code would go here 
end 

它,您可以创建复选框/收音机/隐藏字段在你的编辑表单中。

如果您想为Kase创建一些模型,那么还可以查看accep_nested_attributes