Ruby on rails 如何根据情况将js文件切换为调用?

Ruby on rails 如何根据情况将js文件切换为调用?,ruby-on-rails,ruby-on-rails-3,jquery,Ruby On Rails,Ruby On Rails 3,Jquery,我有3个变量,我想调用位于不同视图中的不同js文件 如果@community=>我想调用/views/communities/refresh.js.erb 如果@community\u topic=>我想调用/views/community\u topics/refresh.js.erb 如果@user=>我想调用/views/users/refresh.js.erb 我怎样才能把它编码成这个 respond_to do |format| format.html {

我有3个变量,我想调用位于不同视图中的不同js文件

  • 如果@community=>我想调用/views/communities/refresh.js.erb
  • 如果@community\u topic=>我想调用/views/community\u topics/refresh.js.erb
  • 如果@user=>我想调用/views/users/refresh.js.erb
我怎样才能把它编码成这个

    respond_to do |format|
        format.html { redirect_to @community, :notice => "comment added!"  }
        format.js { }
    end 

假设您只想渲染视图

respond_to do |format|
  format.html { redirect_to @community, :notice => "comment added!"  }
  format.js do
    if @community.present?
      render 'communities/refresh' 
    elsif @community_topic.present?
      render 'community_topics/refresh'
    elsif @user.present?
      render 'users/refresh'
    end
  end
end

但总而言之,我认为你的控制器违反了一些基本的REST规则,不是吗?因此,我认为您应该首先重新考虑控制器的结构,以便您有三种方法,每种方法负责其中一个对象(
@community
@community\u topic
@user
)。

假设您只想呈现视图

respond_to do |format|
  format.html { redirect_to @community, :notice => "comment added!"  }
  format.js do
    if @community.present?
      render 'communities/refresh' 
    elsif @community_topic.present?
      render 'community_topics/refresh'
    elsif @user.present?
      render 'users/refresh'
    end
  end
end

但总而言之,我认为你的控制器违反了一些基本的REST规则,不是吗?因此,我认为您应该首先重新考虑控制器的结构,以便您有三种方法,每种方法负责其中一个对象(
@community
@community\u topic
@user
)。

除非@community.nil,否则您为什么不做类似
的事情呢?呈现“communities/refresh.js.erb”
为什么不执行类似
的操作,除非@community.nil?呈现“communities/refresh.js.erb”
这非常有效。谢谢,我知道我的方法违反了REST规则,但是如果你让控制器名为comments_controller.rb,它是常用的,并且被其他模型调用来发布评论,那会怎么样?它是变形的,让我们看看。它是为Rails2.3编写的,但对于Rails3也应该可以很好地工作。这非常适合。谢谢,我知道我的方法违反了REST规则,但是如果你让控制器名为comments_controller.rb,它是常用的,并且被其他模型调用来发布评论,那会怎么样?它是变形的,让我们看看。它是为Rails2.3编写的,但也适用于Rails3。