0

モデルの例を次に示します。

class User < ActiveRecord::Base

has_secure_password

validates :login, :presence => { :message => 'please, provide a password' }, :uniqueness => true
validates :password, :presence => true, :confirmation => true
...etc...
end    

これが私がコントローラーに持っているものです:

class UsersController < ApplicationController

def create
@user = User.create(user_params)

if @user.save
 redirect_to(:action => 'login', :controller => 'access')
else
 redirect_to(:action => 'index', :controller => 'registration')
 flash[:notice] = @user.errors.full_messages   
 end
end

登録フォームの下にレンダリング機能があります:

<%= render 'layouts/error_messages' %>

そして部分的なビュー自体:

<%# Rails flash messages styled for Bootstrap 3.0 %>
<% flash.each do |name, msg| %>
   <% if msg.is_a?(String) %>
     <div class="alert alert-<%= name == :notice ? "success" : "danger" %>">
       <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;  </button>
       <%= content_tag :div, msg, :id => "flash_#{name}" %>
     </div>
  <% end %>
<% end %>

うまくいかないので、手が必要です。ありがとうございました。

4

1 に答える 1

0

msgは文字列ではなく、文字列の配列なので表示されないので失敗だと思います。

アプリケーション コントローラー (flash.rb) に含める便利なモジュールを作成しました。

https://gist.github.com/Rabsztok/9018332

これにより、次のような簡単な方法を使用してコントローラーでフラッシュメッセージを作成できます

if @user.save
  Emailer.email_confirmation(@user).deliver
  success 'Registered!'
else
  error_for @user
end

また、フラッシュを表示するためのパーシャル (レイアウトの好きな場所にレンダリングする) とヘルパーを、フォームの上に配置して検証できる便利なエラー リストを作成するメソッドと共に含めました。エラーのリストを含む赤いエラー メッセージが作成されます。

于 2014-02-15T11:59:42.547 に答える