【问题标题】:Rails: Render a .js.erb from another controller?Rails:从另一个控制器渲染 .js.erb?
【发布时间】: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

【问题讨论】:

  • 我遇到的问题是我试图渲染的 .js.erb 文件位于另一个视图文件夹中(创建方法在 post_controller 中,我试图在来自 post_controller 的页面视图)。有什么建议吗?

标签: javascript ruby-on-rails ajax


【解决方案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 => "classrooms/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 => "classrooms/create_differently.js.erb" }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2016-02-03
  • 2015-10-25
  • 2015-07-31
  • 1970-01-01
相关资源
最近更新 更多