小编Dan*_*iel的帖子

Rails使用Twitter Bootstrap设计I18n Flash消息

你好我是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">&#215;</a>
      <%= content_tag :div, msg, :id => "flash_#{name}" %>
    </div>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如何使用自定义css显示所有Flash消息(错误,成功,通知)?

更新:这篇文章显示了我正在尝试做的正确版本.我遇到的问题是样式看起来不一样.我相信这是因为html标签.

html = <<-HTML
 <div …
Run Code Online (Sandbox Code Playgroud)

flash ruby-on-rails devise twitter-bootstrap rails-i18n

9
推荐指数
3
解决办法
8645
查看次数

设计Flash方法导轨

我正在使用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

5
推荐指数
1
解决办法
1万
查看次数

Rails collection_select 与 f.collection_select

我无法理解两者之间的区别。有人可以解释一下使用 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) %>

Rails API

forms ruby-on-rails form-for

5
推荐指数
1
解决办法
3560
查看次数

用多种模型设计视图

我有两个模型,管理员和用户.我在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

1
推荐指数
1
解决办法
4949
查看次数

覆盖设计注册控制器两次?

我有两个模型,User和Admin.我想知道是否可以覆盖Devise的Registrations Controller并有两个自定义注册控制器 - 每个模型一个.

我知道可以通过覆盖注册控制器来获得我想要的东西,我只会使用If else语句,但如果我错了,请纠正我.我认为如果可能的话,最好避免使用if else语句.

你可以在另一篇文章中看到我到目前为止所做的事情 - 我有视图范围,并且出于某种原因它使用了错误的视图集.用多种模型设计视图

ruby-on-rails devise ruby-on-rails-4

1
推荐指数
1
解决办法
1851
查看次数