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