2012-11-19 50 views
3

我所有的代碼工作很好,我想呈現相同的頁面:用戶提交表單與您的訂單後的新。這個問題是關於:我想顯示在提交後的頁面Pedido enviado com sucesso.通知消息,但它不工作。我的驗證錯誤消息很好地顯示,但我不知道爲什麼我的成功消息沒有。提交表單我想留在同一個頁面,顯示後:注意消息

任何提示?

(對不起我的代碼縮進)

pedidos_controller下降:

class PedidosController < ApplicationController 

    def new 
    @pedido = Pedido.new 
    1.times do 
     pessoa = @pedido.build_pessoa 
     produto = @pedido.produtos.build 
    end 

    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @pedido } 
    end 
end 

def create 
    @pedido = Pedido.new(params[:pedido]) 
    respond_to do |format| 
    if @pedido.save 
     PedidosMailer.delay.registro_do_pedido(@pedido) 
     PedidosMailer.delay.email_para_cotar_produtos(@pedido) 
     format.html { redirect_to action: "new", notice: 'Pedido enviado com sucesso.' } 
     format.json { render json: @pedido, status: :created, location: @pedido } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @pedido.errors, status: :unprocessable_entity } 
    end 
    end 
end 
end 

new.html.erb觀點:

<p id="notice"><%= notice %></p> 
<%= render 'form' %> 

_form.html.erb觀點:

<%= form_for(@pedido, :html => { :class => "form-contato"}) do |f| %> 
<% if @pedido.errors.any? %> 
    <div id="error_explanation"> 
    <h2>Ocorreram <%= pluralize(@pedido.errors.count, "erro") %></h2> 

    <ul> 
    <% @pedido.errors.full_messages.each do |msg| %> 
    <li><%= msg %></li> 
    <% end %> 
    </ul> 
</div> 
<% end %> 

<div class="row"> 
    <div class="span4"> 
    <h1>Dados pessoais</h1> 
    <%= f.fields_for :pessoa do |builder| %> 
     <%= render 'pessoa_fields', f: builder %> 
    <% end %> 
    </div> 

<div class="span8"> 
    <h1>Ítens</h1> 

    <%= f.fields_for :produtos do |builder| %> 
    <%= render 'produto_fields', f: builder %> 
    <% end %> 
</div> 
<div class="span10"> 
    <%= link_to_add_fields "Adicionar mais produtos", f, :produtos %> 
</div> 
    <%= button_tag "Enviar", class: "btn btn-red span10", name: "commit" %> 
</div> 
<% end %> 

_pessoa_fields.html.erb觀點:

<fieldset> 
<%= f.text_field :nome, class: "span4", placeholder: "Nome" %> 
<br /> 
<%= f.text_field :telefone, class: "span4", placeholder: "Telefone" %> 
<br /> 
<%= f.text_field :email, class: "span4", placeholder: "Email" %> 
</fieldset> 

_produto_fields.html.erb觀點:

<% @lista_de_produtos = ["Qualibom standard", "Qualibom premium", "Bomdemais standard", "Bomdemais premium"] %> 
<fieldset class="campos-produtos span10"> 
<div class="span3"> 
    <%= f.select :nome, options_for_select(@lista_de_produtos, :selected => f.object.nome), :prompt => 'Selecione um produto' %> 
</div> 
<div class="span3"> 
    <%= f.text_field :quantidade, class: "span3", placeholder: "Quantidade" %> 
</div> 
</fieldset> 
+0

爲什麼你有一個'1.times do' ....? – meagar

+0

這是一個小錯誤,在我表現出的產品,用戶2個或3場。感謝記住。 – ricardocaldeira

回答

3

您需要使用flash[:notice],不notice,在你看來:

<% if flash[:notice] %> 
    <p id="notice"><%= flash[:notice] %></p> 
<% end %> 

當你通過通過消息的redirect_tonotice:參數,它被放置到flash陣列,這是一種特殊的pseduo會話,其持續單個請求:

ActionController::Redirecting documentation

另外,也可以分配閃速消息作爲重定向的一部分。還有爲常用閃光的名字警報和通知,以及通用閃存桶兩個特殊的訪問器。

相關問題