Ruby on rails 如何根据情况将js文件切换为调用?
我有3个变量,我想调用位于不同视图中的不同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 {
- 如果@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。