1

私のapplication.html.erbには次のものがあります:

    <body<% if iscontact? %> id="contact"<% end %>>'

私が持っている同じファイルに:

    <div class="container">
    <% flash.each do |key, value| %>
      <div class="alert alert-<%= key %>"><%= value %></div>
    <% end %>
    <%= yield %>
    </div>'

検証エラーが発生した後、本文に追加した ID (上記の「連絡先」ID) に添付されたスタイルが失われます。ID を失うため、スタイリングが失われます。

例はhttp://dev.mym5realty.com/contactで見ることができます。送信ボタンをクリックするだけで、ID が失われていることがわかります。本当のメッセージを送らないでください。お願いします。

フラッシュ メッセージの後に ID が失われないようにする方法はありますか?

検証エラーの後に閉じるボタンの画像も失います... iscontactの場合と非常に似ていますか? ページにボタン画像を表示します。

したがって、私のapplication_helperが実行されていないか、フラッシュプロセスのどこかで「/ contact」ページにないようです。

def iscontact?
if current_page?('/contact')
  return true
end

return false
end

そしてコントローラー:

class ContactController < ApplicationController

def new
  @message = Message.new
end

def create
@message = Message.new(params[:message])

if @message.valid?
  NotificationsMailer.new_message(@message).deliver
  redirect_to(root_path, :notice => "Message was successfully sent.")
else
  flash.now.alert = "Please fill all fields."
  render :new
end
end
4

1 に答える 1

0

ドキュメントでは、メソッドでコントローラーとアクションを明示的に宣言することをお勧めしますcurrent_page?。リンクは次のとおりです。 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F

次のようなものを潜在的に使用できます。

def iscontact?
  if current_page?(:controller => 'contact', :action => 'new')
    return true
  elsif current_page?(:controller => 'contact', :action => 'create')
    return true
  else
    return false
  end
end

乾杯!

于 2013-05-08T03:28:27.303 に答える