0

如何从 index.html.erb 中的 action1、action2 和 action3 呈现 javascript?在索引操作中,我需要运行这些操作,并且在它们完成后,我需要使用警报通知它们已完成......但是 rails 不会多次渲染,有解决方法吗?

控制器:

def index
  action1
  action2
  action3
end


def action1
  # do some process
  #send a javascript alert "action1 finished" (but display that alert in the index)
end

def action2
  # do some process
  #send a javascript alert "action2 finished" (but display that alert in the index)
end
def action3
  # do some process
  #send a javascript alert "action3 finished" (but display that alert in the index)
end
4

1 回答 1

0

不能在控制器中多次渲染,而您的结构听起来很吸引人,因为它干净且结构良好。

有两种解决方案取决于您在 action1、action2 中的逻辑有多复杂......

简单的方法:使用部分

# FoosController
def index
  @foos = Foo.scoped
end

# app/views/foos/index.html.erb
render partial: 'partial_1', locals: { local_1: @foos.local_1}
render partial: 'partial_2', locals: { local_2: @foos.local_2}

使用细胞宝石

https://github.com/apotonick/cells

控制器代码相同。不同之处在于您render_cell在索引视图中而不是部分。然后你可以在 Cells 迷你控制器中添加复杂的逻辑

结论

如果控制器中的逻辑不是那么复杂,我更喜欢部分。对于像段这样的小部件,单元格会更好。

于 2013-07-12T16:58:08.043 回答