我正在做一个Ruby on Rails课程,我正在试图创建一篇博文,但它给了我一个错误。它说:如何在没有主题的rails中创建博客文章?
1 error prohibited this blog from being saved:
- 主题必须存在
我怎么改解决?
我正在做一个Ruby on Rails课程,我正在试图创建一篇博文,但它给了我一个错误。它说:如何在没有主题的rails中创建博客文章?
1 error prohibited this blog from being saved:
我怎么改解决?
在你Blog
模型,你可以添加:
belongs_to :topic, optional: true
这将删除Topic
关联的验证检查。
以下是optional上的文档。请记住,这是如果你想有一个Blog
保存没有Topic
。
可以省力,像这样:
post.save(validate: false)
我会在哪里放置该代码? –
你必须把topic_id因为博客文章belongs_to的话题 这里是如何
内部应用程序/视图/博客/ _form.html.erb添加˚F 。选择选择主题(我复制从链接,你通过代码)
<%= form_with(model: blog, local: true) do |form| %>
<% if blog.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(blog.errors.count, "error") %> prohibited this blog from being saved:</h2>
<ul>
<% blog.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form.select :topic_id, Topic.pluck(:title, :id).sort, include_blank: false %>
<div class="field">
<%= form.label :title %>
<%= form.text_field :title, id: :blog_title %>
</div>
<div class="field">
<%= form.label :body %>
<%= form.text_area :body, id: :blog_body %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
它没有工作。我刚刚得到一个错误,说'未定义的局部变量或方法'f'为#<#
ups对不起,您使用博客形式,我只是将我的答案从f.select更改为form.select – widjajayd
现在它说#undefined方法'uniq'为#
谢谢。这工作。但是如果我想输入主题,我仍然没有主题文本框。我如何添加? –
你想要那里*永远*成为一个话题? – jdgray
不可以。我想为主题提供选项,但如果我没有它,我希望它仍然可以发布。 –