从 Rails 中的视图选择或创建

Posted

技术标签:

【中文标题】从 Rails 中的视图选择或创建【英文标题】:Select or create from view in rails 【发布时间】:2014-01-02 10:53:42 【问题描述】:

在 rails 中是否有任何简单的方法来实现从视图中选择或创建。

例如:

Product has_many(or has_one) Tags.

在创建新产品时,我可以选择现有的tags 或创建新产品。

这可以通过使用 javascript 和其他方式来完成。但所有这些都需要更多的时间和精力。

如果您知道其他简单的方法,请分享...

编辑:

类似的东西。

【问题讨论】:

selector or create from view 是什么意思?您的意思是要从视图本身执行实际操作? 【参考方案1】:

但假设您有 100 个或更多标签!如果有 100 个或更多复选框,您的页面会看起来很糟糕......,一种优雅的方法是使用一个名为 jQuery Tokeninput 的 jQuery 插件,我在我的项目中使用它,它对你想要什么非常有帮助,你可以找到插件Here

这是一个关于如何使用它的截屏视频:Token fields

这是修订版:Token Fields (revised)

如果你也想查看这个关于同一插件的博客文章How to create a token input field where the user can also add new items

欢呼

【讨论】:

感谢您的回答。但如果未列出,则无法创建新的选项。为此,我们需要另一种形式。这是我需要避免的。如果我遗漏了什么,请告诉我... 不,错了,如果没有列出,您可以创建一个新项目:) 我不记得该怎么做,请查看上面的链接,如果您可以从 railscast 访问修改后的剧集,您会找到方法 ): 无法访问.. 无论如何我会尝试这个解决方案 实现了它并且工作正常..您之前评论中的网址正在重定向到其他地方。【参考方案2】:

是的。

您正在使用嵌套表单。试试看,https://github.com/ryanb/nested_form

例如,

<% form_for @product do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <% f.fields_for :tags do |tag| %>
  <p>
    <%= tag.label :content, "Tag Name" %><br />
    <%= tag.check_box :content %>
  </p>

  <%= tag.link_to_remove "Remove this tag" %>
  <% end %>

  <%= tag.link_to_add "Add new tag" %>

  <p><%= f.submit "Submit" %></p>
<% end %>

按照文档中的说明设置控制器和模型,并在视图中尝试上述代码。这个 railscast 将帮助您了解嵌套形式 http://railscasts.com/episodes/197-nested-model-form-part-2

【讨论】:

以上是关于从 Rails 中的视图选择或创建的主要内容,如果未能解决你的问题,请参考以下文章

使用 ActiveRecord 语法从 Rails 中的连接表中选择或按列排序

从 Rails 3 生成 pdf - 选择啥工具?

Rails 应用程序中的主题

如何根据Rails 5中的select选项从数据库中进行搜索输入

从超过 1 个表格中选择或创建最近 3 篇文章的视图

MySQL - 从视图中选择或直接选择