2017-07-04 74 views

回答

1

在你Blog模型,你可以添加:

belongs_to :topic, optional: true 

这将删除Topic关联的验证检查。

以下是optional上的文档。请记住,这是如果你想有一个Blog保存没有Topic

+0

谢谢。这工作。但是如果我想输入主题,我仍然没有主题文本框。我如何添加? –

+0

你想要那里*永远*成为一个话题? – jdgray

+0

不可以。我想为主题提供选项,但如果我没有它,我希望它仍然可以发布。 –

0

可以省力,像这样:

post.save(validate: false) 
+0

我会在哪里放置该代码? –

0

你必须把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 %> 
+0

它没有工作。我刚刚得到一个错误,说'未定义的局部变量或方法'f'为#<#:0x007f9a0da71210> –

+0

ups对不起,您使用博客形式,我只是将我的答案从f.select更改为form.select – widjajayd

+0

现在它说#undefined方法'uniq'为#' –

相关问题