当对象无效时从部分渲染表单

时间:2014-09-04 12:04:07

标签: ruby-on-rails ruby renderpartial

在我的目标网页上,我有一个联系表单

<%= render 'contacts/form' %>

当对象有效时,一切都很有效。但我在登录页面上渲染此联系表单时遇到问题,其中包含有关属性错误的信息。

这是我的控制器:

class ContactsController < ApplicationController

  def new
  end

  def create
    @contact = Contact.new(contact_params)
    if @contact.save
      redirect_to root_url
      flash[:success] = "Dziękuję za wysłanie wiadomości"
    else
      render 'homes/home'
    end
  end

  private

  def contact_params
    params.require(:contact).permit(:podpis, :wiadomosc, :email, :nickname)
  end
end

我的家/主页模板:

  <div id="page-content">

  <!-- O mnie -->
  <%= render 'o_mnie' %>         

  <!-- Resume -->
  <%= render 'resume' %>

  <!-- Blog -->
  <%= render 'blog' %>

  <!-- Portfolio -->
  <%#= render 'projekty' %>  

  <!-- Contact -->
  <%= render 'kontakt' %>

</div>

这是我的应用程序布局

<body>
     <%= render 'layouts/header' %>

    <div id="page-content">
        <%= render 'shared/flashes', flash: flash %> 
    </div>

    <%= yield %>
</body>

当我检查堆栈类似问题时,现在我知道放置在渲染&#39; homes / home&#39;中的问题。这给了我错误

  

缺少部分联系人/ _o_mnie,application / _o_mnie {:locale =&gt; [:pl],:formats =&gt; [:html],:variants =&gt; [],:handlers =&gt; [:erb ,:builder,:raw,:ruby,:jbuilder,:coffee]}。搜索:

当我尝试渲染root_url时,我遇到了同样的问题。 我的代码出了什么问题?

2 个答案:

答案 0 :(得分:4)

如果模板由其他控制器使用,则必须指定前缀。

更改为:

<div id="page-content">

  <!-- O mnie -->
  <%= render 'homes/o_mnie' %>         

  <!-- Resume -->
  <%= render 'homes/resume' %>

  <!-- Blog -->
  <%= render 'homes/blog' %>

  <!-- Portfolio -->
  <%#= render 'homes/projekty' %>  

  <!-- Contact -->
  <%= render 'homes/kontakt' %>

</div>

答案 1 :(得分:1)

考虑您的文件(_o_mine.html.erb_resume.html.erb_blog.html.erb_kontakt.html.erb)位于/app/views/shared文件夹

然后会是这样的

<div id="page-content">

  <!-- O mnie -->
 <%= render 'shared/o_mnie' %>         

   <!-- Resume -->
 <%= render 'shared/resume' %>

 <!-- Blog -->
 <%= render 'shared/blog' %>

  <!-- Portfolio -->
 <%#= render 'shared/projekty' %>  

 <!-- Contact -->
 <%= render 'shared/kontakt' %>

 </div>