如何在 Rails 中制作动态下拉菜单?

发布于 2024-10-30 19:49:08 字数 123 浏览 3 评论 0原文

我正在开发一个电子商务项目,其中将有用于选择尺寸的单选按钮。我有一个数量下拉菜单。我想根据用户所选尺寸的可用库存使此下拉列表动态化。谁能告诉我如何在 Rails 上做到这一点?不会用大量的 javascript 扰乱我的视图文件!?

I'm working on a e-commerce project where there will be radio buttons for size selection. I have a dropdown for quantity. I want to make this dropdown dynamic based on stock available for the user selected size. Can anyone tell me how this can be done on Rails? without cluttering my view file with lot of javascript!?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞琼窗梦回ˉ 2024-11-06 19:49:08

如果您使用带原型的 Rails 3(默认 afaik),您可以使用原型遗留帮助程序(Github 上的链接) 添加观察者并为下拉框渲染部分视图。您可以添加这样的观察者,

<%= observe_field 'element_var_name',
      :url => { :action => "another_action_here" },
      :update => "div_tag_to_update",
      :with => "'selected='+ escape($('element_var_name').value)" %>

请务必根据您的情况调整 element_var_name 和操作。 div_tag_to_update 是将随下拉框更新的 div。 another_action_here 操作应该呈现如下所示的视图:

def call_ids_by_type
  @element_list = ... # whatever fits for you, like: [[key, value],[key, value]]
  render :layout => false
end

在分部视图中,您可以使用元素列表来生成下拉框:

<%= f.select :var_name, @element_list %>

If you are using Rails 3 with prototype (default afaik), you could use the prototype legacy helpers (Link on Github) to add an observer and render a partial view for your dropdown box. You could add an observer like this

<%= observe_field 'element_var_name',
      :url => { :action => "another_action_here" },
      :update => "div_tag_to_update",
      :with => "'selected='+ escape($('element_var_name').value)" %>

Be sure to adjust element_var_name and the action to your situation. div_tag_to_update is the div that will update with the dropdown box. The another_action_here action should render a view like this:

def call_ids_by_type
  @element_list = ... # whatever fits for you, like: [[key, value],[key, value]]
  render :layout => false
end

In the partial view, you can use the element list to generate the dropdown box:

<%= f.select :var_name, @element_list %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文