我想在我的游戏日期控制器中使用find_or_create方法。当参数在game_date_params时,我不知道如何在创建动作中使用该方法。任何建议如何从game_date_params中提取日期?
class GameDatesController < ApplicationController
before_action :authenticate_user!
before_action :authenticate_admin
def index
@game_dates = GameDate.all
@showcases = Showcase.joins(:game_dates)
end
def new
@game_date = GameDate.new
@game_date.referee_stats.build
end
def create
@game_date = GameDate.new(game_date_params)
if @game_date.save
redirect_to showcases_path
flash[:success] = "Game date created"
else
render 'new'
end
end
def show
@game_date = GameDate.find(params[:id])
end
def destroy
@game_date = GameDate.find(params[:id]).destroy
redirect_to root_url
flash[:success] = "Game date deleted"
end
private
def game_date_params
params.require(:game_date).permit(:date, referee_stats_attributes: [ :games_count, :showcase_id ])
end
这是POST操作的输出:
2016-04-01 10:21:44 0200开始POST“/game_dates”127.0.0.1由GameDatesController#创建为HTML参数:{“utf8”=
创建动作用于在调用新动作后创建对象,更新动作用于编辑。混合创建
它应该是这样的:
def create
@game_date = GameDate.find_or_create_by(game_date_params)
if @game_date.present?
redirect_to showcases_path
flash[:success] = "Game date created"
else
render 'new'
end
end
GameDate.find_or_create_by(game_date_params)
会找到所有game_date_params
的记录,因此您可以通过查找特定参数(如日期
)并通过块为其分配其余属性来做到这一点。例如:
def create
# find or initialize the record
@game_date = GameDate.find_or_initalize_by(date: game_date_params[:date]) do |game_date|
# Accept nested attributes as well
game_date.assign_attributes(game_date_params)
end
if @game_date.save
redirect_to showcases_path
flash[:success] = "Game date created"
else
render 'new'
end
end
另请参见:find_or_create_by和AttributesAssignment API文档
我想创建一个浮动动作按钮(添加项目到列表视图),就像谷歌日历,保持与Lollipop之前的Android版本(5.0之前)的兼容性。 我创建了这个布局: 活动main_activity.xml: 如何向按钮添加底纹? 我已经使用了属性提升,但不起作用
create 当你刚起步或者只是想要测试一些东西时,倾向于从 create() 操作符入手。它接收一个有 observer 参数的函数。在前面的一些章节中已提及过,比如 Observable 包装章节。函数签名如下: Rx.Observable.create([fn]) 示例如下: Rx.Observable.create(observer => { observer.next( 1 );
问题内容: 在许多语言(和地方)中,都有一种不错的做法,即通过创建一个像这样的块来创建本地范围。 我该如何在python中实现此功能而又不会出现意外的缩进错误,也不会使用某种技巧 问题答案: 在Python中,作用域分为三种类型:全局,局部和类。您可以创建专门的“作用域”词典以传递给exec / eval()。另外,您可以使用嵌套作用域(在另一个作用域中定义一个函数)。我发现这些在我的所有代码中就
问题内容: 我在詹金斯(Jenkins)有2个工作: 建立并运行单元测试 (构建并)运行集成测试 Job-2 是 Job-1 的下游项目。 Job-1 在其上启动构建并运行单元测试。 Job-2 也会启动构建并运行集成测试。 我想更改它, 并使 Job-2 在由 Job-1 启动的结果构建上运行测试。 问题答案: 您可以使用Copy Artifact插件,并使用Job-2中的Job-1工件对它们进
亲切的问候,斯特凡
问题内容: 我正在使用Python通过一次操作将大块文本写入文件: 如果脚本被中断,所以文件写入未完成,我希望没有文件,而不是部分完成的文件。能做到吗? 问题答案: 将数据写入临时文件,并且在成功写入数据后,将文件重命名为正确的目标文件,例如 根据文档http://docs.python.org/library/os.html#os.rename 如果成功,重命名将是原子操作(这是POSIX要求)