从 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 中的连接表中选择或按列排序