你好我是ruby on rails的新手,我很难理解I18n的flash消息.我正在使用devise,rails 4和twitter bootstrap.我明白设计只使用flash[:notice]和flash[:alert].
我可以通过登录和注销来获取适用于我的用户模型的Flash消息.但是,我无法获得注册的Flash错误或忘记密码才能正常显示.它看起来像是默认的错误消息.
我已经看了很多与此相关的问题,我很困惑的方法是用漂亮的CSS显示所有flash消息(错误,成功,通知).
也许答案已经在我的鼻子下的这篇文章中?rails - 设计 - 处理 - devise_error_messages
目前我的flash消息基于如何使用Twitter Bootstrap Rails gem定义Flash通知
这是我的示例:
在'app/views/layouts/application.html.erb'中
<%= render 'layouts/messages' %>
Run Code Online (Sandbox Code Playgroud)
'应用程序/视图/布局/ _messages.html.erb'
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name == :notice ? "success" : "error" %>">
<a class="close" data-dismiss="alert">×</a>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如何使用自定义css显示所有Flash消息(错误,成功,通知)?
html = <<-HTML
<div …Run Code Online (Sandbox Code Playgroud) 我正在使用Rails 4,Twitter Bootstrap 3.0和Devise 3.0.我正在尝试为设计和我的网站的其余部分获得完全相同的flash消息.到目前为止,我有这个:
在"app/views/layouts/application.html.erb"中:
<%= render 'layouts/messages' %>
Run Code Online (Sandbox Code Playgroud)
"app/views/layouts/_messages.html.erb":
<% devise_flash %>
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>">
<a href="#" data-dismiss="alert" class="close">×</a>
<%= value %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我创建了一个"app/helpers/devise_helper.rb"来覆盖默认的设计错误消息:
module DeviseHelper
def devise_error_messages!
end
end
Run Code Online (Sandbox Code Playgroud)
"app/helpers/application_helper.rb":
def devise_flash
if controller.devise_controller? && resource.errors.any?
flash.now[:error] = flash[:error].to_a.concat resource.errors.full_messages
flash.now[:error].uniq!
end
end
Run Code Online (Sandbox Code Playgroud)
"app/assets/stylesheets/custom.css.scss":
.alert-error {
background-color: #f2dede;
border-color: #eed3d7;
color: #b94a48;
text-align: center; }
.alert-alert {
background-color: #f2dede; …Run Code Online (Sandbox Code Playgroud) ruby-on-rails devise twitter-bootstrap ruby-on-rails-4 twitter-bootstrap-3
我无法理解两者之间的区别。有人可以解释一下使用 form_for 时的区别吗?
假设你有这个:<%= form_for(@post) do |f| %>
示例 - 你什么时候会使用这个?
<%= collection_select(:post, :author_id, Author.all, :id, :name_with_initial, prompt: true) %>
与使用这个?
<%= f.collection_select(:post, :author_id, Author.all, :id, :name_with_initial, prompt: true) %>
我有两个模型,管理员和用户.我在devise.rb中设置了scoped views = true.我还生成了两组不同的设计视图.出于某种原因,当我点击编辑管理员注册时,它给了我一个错误
NoMethodError in Aregistrations#edit
undefined method `email' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
它强调了这一点:
<%= gravatar_for @user %>
Run Code Online (Sandbox Code Playgroud)
并指向"app/views/devise/registrations/edit.html.erb"
在我的"config/initializer/devise.rb"文件中,它具有:
config.scoped_views = true
Run Code Online (Sandbox Code Playgroud)
在我的"config/routes.rb"文件中
devise_for :admins, :controllers => {:registrations => "aregistrations"}
devise_for :users, :controllers => {:registrations => "registrations"}, :path_prefix => 'd'
resources :users, :only =>[:show]
Run Code Online (Sandbox Code Playgroud)
在我的"app/controllers/aregistrations_controller.rb"中,我有
def update
new_params = params.require(:admin).permit(:email, :username, :current_password, :password, :password_confirmation)
change_password = true
if params[:admin][:password].blank?
params[:admin].delete("password")
params[:admin].delete("password_confirmation")
new_params = params.require(:admin).permit(:email, :username)
change_password = false
end
@admin = Admin.find(current_admin.id)
is_valid …Run Code Online (Sandbox Code Playgroud) model-view-controller gravatar ruby-on-rails devise ruby-on-rails-4
我有两个模型,User和Admin.我想知道是否可以覆盖Devise的Registrations Controller并有两个自定义注册控制器 - 每个模型一个.
我知道可以通过覆盖注册控制器来获得我想要的东西,我只会使用If else语句,但如果我错了,请纠正我.我认为如果可能的话,最好避免使用if else语句.
你可以在另一篇文章中看到我到目前为止所做的事情 - 我有视图范围,并且出于某种原因它使用了错误的视图集.用多种模型设计视图