使用AJAX渲染自定义模板

时间:2019-03-04 21:58:59

标签: javascript ruby-on-rails ajax model-view-controller rendering

我有一个部分模板,其中包含一个按钮链接,其CSS样式可以通过passing local variables自定义到模板:

# _button_create.html.erb
text_size ||= 'small'
link_to('Create', create_route_path, :method => :post, :class => text_size, ...)


# rendering button-link with defaults (small version)
render(:partial => 'button_create')

# rendering large version
render(:partial => 'button_create', :locals => {:text_size => 'large'})

单击后,按钮链接将向服务器执行AJAX请求,成功后,将其替换为另一个按钮链接:

# _button_destroy.html.erb
text_size ||= 'small'
link_to('Destroy', destroy_route_path, :method => :delete, :class => text_size, ...)

当我最初使用默认值渲染部分图像时,所有方法都有效。也就是说,成功的AJAX请求将“创建/销毁small”按钮链接替换为“销毁/创建small”按钮链接。

但是,考虑到我最初在单击按钮链接时呈现的是部分模板的“大”版本,然后在AJAX成功时,按钮链接被其“小”版本代替了(因为模板没有知道text_sizelarge,默认值为small)。

关于AJAX成功,我想返回text_size最初呈现large时按钮链接的“大”版本,以及最初呈现{时的“小”版本{ {1}}。

我知道我可以使用AJAX发送“局部变量”数据(作为参数),以使部分模板(尽管通过控制器)知道smalltext_size(例如,通过在{中传递值{1}}),但我正在寻找一种更好的解决方案来处理所有问题。

我的疑问是:

  1. 通常将“ large”等“局部变量”数据作为参数发送给服务器,例如以及模型数据?
  2. 是否有良好的做法或模式来应对上述情况?
  3. 有没有提到这个的名字?

0 个答案:

没有答案