【问题标题】:Rails 4.1 Using a Partial and Rendering Current PathRails 4.1 使用部分和渲染当前路径
【发布时间】:2014-07-13 22:59:41
【问题描述】:

使用 rails 4.1,我在我的根目录上渲染了一个联系人部分 => pages#home。在 create 操作失败后,它会呈现contacts/new。成功后将渲染创建。

使用验证呈现当前根路径的最佳方式是什么?如果错误或成功,我想将所有内容保持在同一视图中。我找到了类似的答案,很多都在 Rails 3 或更早版本上。似乎没有任何效果。

局部视图

 <%= simple_form_for @contact, :html => {:class => 'form-horizontal col-sm-12'} do |f| %>

控制器

class ContactsController < ApplicationController
     def new
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(params[:contact])
    @contact.request = request
    if @contact.deliver
      flash.now[:notice] = 'Thank you for your message. We will contact you soon!'
    else
      flash.now[:error] = 'Cannot send message.'
      render :new
    end
  end

end

【问题讨论】:

  • 我已经回答了你的问题,但值得一提的是,simple_form 为你提供了很多很好的功能。

标签: ruby-on-rails ruby-on-rails-4 simple-form


【解决方案1】:

调用@contact.valid? 将填充@contact.errors.full_messages 任何验证失败。然后你可以创建一个部分的东西,类似于:

<%- unless model.errors.full_messages.empty? %>

  <ul>

    <%- model.errors.full_messages.each do |message| ->

      <li><%= message %></li>

   <%- end %>

  </ul>

<%- end %>

然后在根操作的视图中渲染部分:

<%= render partial: "path/to/partial", locals: { model: @contact } %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多