如何在 Rails 6 中使用 js.erb 视图
How to use js.erb views in Rails 6
是否可以在 Rails 6 应用程序中使用 js.erb
视图?我得到
MyController#my_action is missing a template for this request format and variant.
request.formats: ["text/html"]
request.variant: []
迁移到 rails 6 后使用 js.erb
视图的操作出错。
在我的操作中,我只是为实例变量赋值:
def next_question
@lesson = lesson
end
在路线中我有
put ':package_id/lessons/next_question', to: 'lessons#next_question', as: 'next_question'
并且有提交此请求的表格
= form_tag next_question_path(@package), method: :put, remote: true
如果我创建(用于测试)html.slim
文件,一切正常。
如果我将 format.js
添加到控制器,我会得到 ActionController::UnknownFormat
创建视图文件next_question.js.erb
,然后执行此操作
def next_question
@lesson = lesson
respond_to do |format|
format.js
end
end
此外,在 application.js
文件中启用 ujs
,添加此行
require("@rails/ujs").start()
试试吧!
在 rails 控制器方法中,您需要通过在方法中添加 respond_to 块来定义该方法可以响应的请求的格式。如果不存在 respond_to 块,则默认情况下该方法仅响应 html 请求。对于 js 或任何其他请求,您需要添加一个 respond_to 块。
def next_question
@lesson = lesson
respond_to do |format|
format.js
end
end
这将告诉方法它需要查找名为 next_question.js.erb 的 js.erb 文件,您也可以像这样指定文件名 format.js { render partial: 'filename' }
然后该方法将查找并响应 filename.js.erb
文件。
是否可以在 Rails 6 应用程序中使用 js.erb
视图?我得到
MyController#my_action is missing a template for this request format and variant.
request.formats: ["text/html"]
request.variant: []
迁移到 rails 6 后使用 js.erb
视图的操作出错。
在我的操作中,我只是为实例变量赋值:
def next_question
@lesson = lesson
end
在路线中我有
put ':package_id/lessons/next_question', to: 'lessons#next_question', as: 'next_question'
并且有提交此请求的表格
= form_tag next_question_path(@package), method: :put, remote: true
如果我创建(用于测试)html.slim
文件,一切正常。
如果我将 format.js
添加到控制器,我会得到 ActionController::UnknownFormat
创建视图文件next_question.js.erb
,然后执行此操作
def next_question
@lesson = lesson
respond_to do |format|
format.js
end
end
此外,在 application.js
文件中启用 ujs
,添加此行
require("@rails/ujs").start()
试试吧!
在 rails 控制器方法中,您需要通过在方法中添加 respond_to 块来定义该方法可以响应的请求的格式。如果不存在 respond_to 块,则默认情况下该方法仅响应 html 请求。对于 js 或任何其他请求,您需要添加一个 respond_to 块。
def next_question
@lesson = lesson
respond_to do |format|
format.js
end
end
这将告诉方法它需要查找名为 next_question.js.erb 的 js.erb 文件,您也可以像这样指定文件名 format.js { render partial: 'filename' }
然后该方法将查找并响应 filename.js.erb
文件。