创建动作 - 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的主要内容,如果未能解决你的问题,请参考以下文章