创建动作 - Rails

Posted

技术标签:

【中文标题】创建动作 - Rails【英文标题】:Create action - Rails 【发布时间】:2014-08-05 19:51:18 【问题描述】:

当我尝试在控制台中输出强参数时,服务器没有响应,甚至没有错误。没有。并且创建操作不起作用。任何想法?我正在尝试提交的表单中使用茧。

谢谢,

def new
    @game = Game.new
    @level = @game.levels.build
end

def create

 @game = Game.new(game_params)

 puts @game

 if @game.save
   redirect_to @game, notice: 'Game was successfully created.'
 else
       render :new
    end
end

private

def game_params
  params.require(:game).permit(:name, :publisher, :year, :description, :image, levels_attributes: [:id, :name, :sort_order, :_destroy])
end

我的游戏课

class Game < ActiveRecord::Base
has_many :levels

accepts_nested_attributes_for :levels, :reject_if => :all_blank, :allow_destroy => true

mount_uploader :image, ImageUploader

end

【问题讨论】:

您确定请求执行了create 操作吗?如果在方法的开头添加puts 'Hi' 会怎样?这会输出到控制台吗? 除了@ChrisPeters 提出的问题,您能发布您的游戏课程吗? @ChrisPeters 谢谢你们的帮助,伙计们。我注意到一些奇怪的事情。在我第一次加载我的表单时,提交不起作用,即使我只是在控制台上输入“嗨”。但是如果我重新加载页面,表单就没有问题了。但只有在重新加载之后。 Hrm...好吧,这并没有我希望的那么有用 xD。我刚刚想到,但表格在您的“新”页面上,对吗?听起来您的def new...end 命令搞砸了,或者您的新视图页面设置不正确。你也可以发布这些吗? (抱歉要了这么多东西xD) @Micah,我当然可以。我非常感谢您的帮助。我要编辑上面的代码。 【参考方案1】:

如果您指的是实际的 rails 控制台,那么这些控制台当然不会显示在那里。

查看 http://guides.rubyonrails.org/debugging_rails_applications.html#the-logger,然后将您的 put 更改为更合适的内容,例如:

logger.warn("game: #@game.inspect")

【讨论】:

同样的事情发生了。第一次加载表单时,提交按钮不起作用。只有刷新后。刷新后,一切正常。 更新:当我通过 URL (localhost:3000/games/new) 访问时,表单运行良好。但是当我使用导航栏中的链接 () 时,就会出现问题。【参考方案2】:

感谢您的所有帮助。答案是:turbolinks :-/ 我删除了 turbolinks,现在它工作得很好。

【讨论】:

以上是关于创建动作 - Rails的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4 的动作邮件程序

Rails 3:脚手架销毁动作重定向以显示动作

无法在 Rails 中更新动作文本富文本

Rails 6 动作文本 - 表单验证错误

Rails - 在控制器中路由动作的正确方法

Rails 在控制器动作中形成,在另一个视图中呈现?