gpt4 book ai didi

ruby-on-rails - Rails3 Controller 操作中的条件语句

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:35 25 4
gpt4 key购买 nike

我正在尝试在我的任务 Controller 中为一个简单的 rails3 应用程序编写一个条件语句。

用户有很多任务,任务有一个用户。

创建任务时,我们可以选择谁拥有它:

<%= collection_select(:task, :user_id, User.all, :id, :name, {:prompt => true}) %>

我希望系统仅在为其他人创建任务时向任务所有者发送电子邮件。 IE。当我为自己创建任务时,我不需要收到电子邮件。

我的邮件程序工作正常,在我的任务 Controller 中,我试过这个:

def create
@task = Task.new(params[:task])
respond_to do |format|
if @task.save and @task.user_id = current_user.id
format.html { redirect_to(tasks_path, :notice => 'Task was successfully created.') }
format.xml { render :xml => @task, :status => :created, :location => @task }
elsif @task.save
format.html { redirect_to(tasks_path, :notice => 'Task was successfully created.') }
format.xml { render :xml => @task, :status => :created, :location => @task }
TaskMailer.new_task(@task).deliver
else
format.html { render :action => "new" }
format.xml { render :xml => @task.errors, :status => :unprocessable_entity }
end
end
end

但它并没有真正起作用......任何帮助的机会。

最佳答案

@task.user_id = current_user.id 替换为 @task.user_id == current_user.id

这不是导致错误的原因,但如果 @task.user_id != current_user.id,您将保存任务两次。你可以做这样的事情:

def create
@task = Task.new(params[:task])

respond_to do |format|
if @task.save
format.html { redirect_to(tasks_path, :notice => 'Task was successfully created.') }
format.xml { render :xml => @task, :status => :created, :location => @task }
TaskMailer.new_task(@task).deliver if @task.user_id != current_user.id
else
format.html { render :action => "new" }
format.xml { render :xml => @task.errors, :status => :unprocessable_entity }
end
end
end
end

关于ruby-on-rails - Rails3 Controller 操作中的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com