如何在 Rails 中为带有单选按钮的帖子分配一个类别?

Posted

技术标签:

【中文标题】如何在 Rails 中为带有单选按钮的帖子分配一个类别?【英文标题】:How to assign one category to a post with radio buttons, in Rails? 【发布时间】:2010-10-14 23:30:33 【问题描述】:

新手,第一次发帖。

我只花了大约 4 个小时试图通过单选按钮将一个类别分配给一个帖子(尝试一个常规的博客内容),但无济于事。该关联运行良好,最终我设法让它与选择菜单一起使用,但由于某种原因,单选按钮似乎根本不适合这个。

我真的不喜欢为此使用选择菜单,因为我只有 4 个类别,并且必须单击两次才能选择一个类别,因为单击太多。所以我真的很想改用单选按钮。

我查看了the other question on the subject 并毫无意义地搜索了网络,但它只帮助我得到了更多不同的错误:未定义的方法、AssociationTypeMismatch、0 的 category_ids 等等。所以我今天放弃了,决定创建一个帐户,看看是否有人可以破解这个。任何帮助将不胜感激。

谢谢。

【问题讨论】:

我什至没有它了。我尝试了所有可能的组合,我可以从表单助手 API 中找出并没有任何效果,所以我完全摆脱了它。原来这正是问题所在;该解决方案看起来与那里所说的完全不同。 【参考方案1】:

我们开始吧。在RailsCasts Episode 17 Ryan 中使用 habtm 和复选框来做这种事情。我将其修改为使用 belongs_to 和单选按钮。感谢您的练习。

> script/generate scaffold category category_name:string
> script/generate scaffold post post_name:string, post_content:text, category_id:integer

后模型

Class Post < ActiveRecord::Base
   belongs_to :category
End

发布创建视图(删除 category_id 的默认文本框)

...
<p>
 <% for category in Categories.find(:all) %>
   <div>
       <%= radio_button_tag "post[category_id]", category.id, @post.category_id == category.id %><%= category.name %>
   </div>
 <% end %>
</p>

【讨论】:

现在我很尴尬,但很感激!我实际上是这样尝试的,但不知何故让它出错了。但大多数情况下,我太着迷于通过遵循表单助手 API 中的 radio_button 语法来让事情正常工作,这看起来不像那样,但我认为这是官方的方式。谢谢! 哦,只有一件事:最后一位不是category.category_name,而是category.name。只是想我会把它留给后代。 @Baby Diego:您可以在我的脚本/生成中看到我的类别模型具有属性 category_name。您可能刚刚在模型中创建了 name 作为属性...这正是我在编写它时测试的代码... 您好,当使用“for category in Categories.find(:all)”时,您将如何确保默认情况下选择其中一个单选按钮为“true”???

以上是关于如何在 Rails 中为带有单选按钮的帖子分配一个类别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在rails中正确使用单选按钮?

Rails 5 ajax 表单:单击 Ajax 中的 2 个单选按钮之一提交表单

如何在 Laravel 7 中为单选按钮设置表单标签

在 Ruby on Rails 中为帖子添加标签

如何在 Rails 中为博客创建单独的管理界面

rails,simple_form,保存后如何使用所选选项更新单选按钮?