ruby-on-rails - 如何在同一个 Rails Controller 中使用不同的 RJS 模板?

标签 ruby-on-rails ruby rjs

我有一个 Controller 方法,它返回一个在部分中呈现的下拉列表,但根据部分的使用位置,RJS 模板需要不同。我可以将参数传递给 Controller ​​来确定使用哪个 RJS 吗?

这是 Controller 方法,非常简单:

def services
   respond_to do |format|
     format.js {
       @type     = HospitalCriteria.find_by_id(params[:type_id])
       @services = @type.children.all
     }
   end
end

这是自动渲染的 rjs 模板

page.replace_html 'select_service', :partial => 'hospital/services'
page.replace_html 'select_condition', :partial => 'hospital/conditions'
page.replace_html 'select_procedure', :partial => 'hospital/procedures'

page << 'if ($("chosenType") != null) {'
  page.replace_html 'chosenType', @type.name
  page.replace_html 'chosenService', 'Selected Service'
  page.replace_html 'chosenCondition', 'Selected Condition'
  page.replace_html 'chosenProcedure', 'Selected Procedure'
page << '}'

最佳答案

我喜欢迈克的回应,但从设计角度需要考虑一些事情:

在我看来,这应该在 View 层中 - 如果操作在语义上是相同的,但表示不同,也许有两个不同的 rjs 部分并且执行如下所示的操作更符合 MVC?

if params[:use_alternate]
  render :partial => "case_1.rjs"
else
  render :partial => "case_2.rjs"
end

关于ruby-on-rails - 如何在同一个 Rails Controller 中使用不同的 RJS 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192549/

相关文章:

ruby-on-rails - Resque 插件的 resque-web 未运行

ruby-on-rails - Rails 将 config.active_record.default_timezone 设置为 :utc or :local 以外的值

ruby-on-rails - Rails 4 中的命名路由助手与数组

javascript - 使用 javascript 进行远程 => true 调用

javascript - ruby on rails 中的 Ajax flash 消息

ruby-on-rails - Rails 6 和 Google Maps for Rails

ruby-on-rails - Stripe 取消用户订阅

Ruby Savon Gem 更改日志记录配置

html - 将自定义 HTML ID 添加到 Rails 选择框