Rails:从另一个控制器渲染 .js.erb?
Posted
技术标签:
【中文标题】Rails:从另一个控制器渲染 .js.erb?【英文标题】:Rails: Render a .js.erb from another controller? 【发布时间】:2014-05-28 02:46:33 【问题描述】:如何从不属于将要在其中呈现的视图的控制器呈现.js.erb
?
例如:如何从post_controller
在我的页面视图中呈现create.js.erb
?
post_controller.rb
def create
@post = Post.new(post_params)
respond_to do |format|
if @post.save
format.html redirect_to @post, notice: 'Post was successfully created.'
format.json render action: 'show', status: :created, location: @post
format.js #I think I need something in here?
else
format.html render action: 'new'
format.json render json: @post.errors, status: :unprocessable_entity
end
end
end
【问题讨论】:
这可以帮助***.com/questions/13367426/… 我遇到的问题是我试图渲染的 .js.erb 文件位于另一个视图文件夹中(创建方法在 post_controller 中,我试图在来自 post_controller 的页面视图)。有什么建议吗? 【参考方案1】:似乎有几种方法可以实现这一点:
respond_to do |format|
format.js :location => path_to_controller_method_url(argument)
end
How do you respond_to another js file in the controller using Ruby on Rails?
respond_to do |format|
format.js
:template => "clas-s-rooms/create_differently.js.erb",
:layout => false
end
Render alternate view in ruby on rails
respond_to do |format|
format.js render :file => "/path/to/save.js.erb"
end
【讨论】:
关于选项2,我相信你应该有:format.js render :template => "clas-s-rooms/create_differently.js.erb"
以上是关于Rails:从另一个控制器渲染 .js.erb?的主要内容,如果未能解决你的问题,请参考以下文章
Rails update.js.erb 不执行 javascript
Rails 6.0.4 远程:true 不在浏览器中 js/ajax 渲染 _partial.html.erb