很抱歉,因为我正在编写我的第一个rails应用程序.
我了解布局视图,但如果您正在使用它们,是否有任何方法可以包含特定于视图的js或css文件?例如,我有layouts/products.html.erb,并且products/edit.html.erb我想要products_edit.css,但我不希望所有产品视图的css,实现它的最佳实践是什么?
这很愚蠢,但我无法弄清楚如何设置由Rails创建的输入元素的样式button_to- 是的,我一遍又一遍地阅读文档并尝试了样本.
这是我的ERB代码:
<%= button_to "Claim", action: "claim", idea_id: idea.id, remote: true, class: 'btn btn-small' %>
Run Code Online (Sandbox Code Playgroud)
这会产生以下HTML:
<form action="/ideas/claim?class=btn+btn-small&idea_id=4&remote=true" class="button_to" method="post">
<div>
<input data-remote="true" type="submit" value="Claim">
<input name="authenticity_token" type="hidden" value="pU3umgqrDx3WbalfNK10c9H5B5N4OzPpohs4bWW8mow=">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
而我想要的只是input拥有class = "btn btn-small".
救命?谢谢!
每个人我都是Ruby on Rails的新手,我需要了解一些东西.我有一个实例变量(@users),我需要在html.erb文件中循环它限制次数.我已经用过了:
<% @users.each do |users| %>
<%= do something %>
<%end %>
Run Code Online (Sandbox Code Playgroud)
但是,我需要将其限制为10次.我能做什么?
我正在使用Ruby on Rails,需要在我的一个html.erb文件中运行一段Ruby代码.我是这样做的:
<% def name %>
<% name = username %>
<%= name %>
Run Code Online (Sandbox Code Playgroud)
或者像这样:
<% def name
name = username %>
<%= name %>
Run Code Online (Sandbox Code Playgroud)
谢谢阅读.
有没有更好的方法将以下内容转换为HAML?
<% flash.each do |key, value| %>
<div class="flash <%= key %>"><%= value %></div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我能做的最好的是:
- flash.each do |key, value|
%div{:class => "flash " + key.to_s}= value
Run Code Online (Sandbox Code Playgroud)
但它似乎很尴尬.并且.flash#{ key}= value似乎不对???
我有一个用于发送电子邮件的ERB模板.
Name: <%= @user.name %>
<% if @user.phone.present? %>
Phone: <%= @user.phone %>
<% end %>
Address: <%= @user.address %>
Run Code Online (Sandbox Code Playgroud)
我试图删除之间的空白行Name和Address何时Phone为空.
返回结果
Name: John Miller
Address: X124 Dummy Lane, Dummy City, CA
Run Code Online (Sandbox Code Playgroud)
预期结果
Name: John Miller
Address: X124 Dummy Lane, Dummy City, CA
Run Code Online (Sandbox Code Playgroud)
我试图使用<%--%>标签(删除尾随的新行)没有任何成功.
Name: <%= @user.name %>
<%- if @user.phone.present? -%>
Phone: <%= @user.phone %>
<%- end -%>
Address: <%= @user.address -%>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
PS:我在Rails 2.3.8上.
注1
现在,我正在使用ruby hackery解决这个问题.
助手方法:
def …Run Code Online (Sandbox Code Playgroud) 我正在使用带有Bootstrap的simple_form,我希望我的"记住我"复选框位于标签的左侧,如Twitter Bootstrap文档中所示:http://twitter.github.com/bootstrap/base- css.html#形式
我的表单代码如下所示:
<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => 'well'}) do |f| %>
<%= f.input :email %>
<%= f.input :password %>
<%= f.input :remember_me, :as => :boolean if devise_mapping.rememberable? %>
<%= f.button :submit, "Sign In" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
结果是复选框顶部的"记住我"标签.
我搞砸了什么?
更新3:看起来这是特定于.yml.erb中的灯具 - 即使我没有模板化代码,似乎yml.erb文件中的灯具也没有加载.有一个简单的.yml文件.这可能与设计本身无关.
注意:请参阅更新3注释以了解相关更改
我需要在我的rails应用程序中生成Devise用户.我注意到清除数据库和加载灯具会加载除Devise用户之外的所有其他灯具(Update 3:在.yml.erb文件中).
我已经看到了这个其他线程,但我尝试了所有选项,但似乎仍然没有加载灯具.
# ../fixtures/users.yml.erb
user1:
email: user1@mysite.com
name: user1
encrypted_password: <%= Devise.bcrypt(User, 'passw0rd!') %>
# also tried encrypted_password: User.new(password_salt: '$2a$10$PoBe1MvkoGJsjMVTEjKqge').send(:password_digest, 'somepassword')
admin: true
Run Code Online (Sandbox Code Playgroud)
从控制台:
要清除测试db:
$ bundle exec rake db:schema:load RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
要将灯具加载到测试db中:
$ bundle exec rake db:fixtures:load RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
在测试中运行rails console(未找到用户,但正在加载其他模型装置,如App):
$ rails c test
Loading test environment (Rails 4.1.5)
irb(main):001:0> User.first
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> nil
irb(main):002:0> App.first
App Load …Run Code Online (Sandbox Code Playgroud) 在ERB中写这个最可读和/或最简洁的方法是什么?编写我自己的方法并不可取,因为我希望将更清晰的解决方案传播给我公司的其他人.
<% @items.each do |item| %>
<% if item.isolated? %>
<div class="isolated">
<% end %>
<%= item.name.pluralize %> <%# you can't win with indentation %>
<% if item.isolated? %>
</div>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
==更新==
我使用了Gal的答案的更通用版本,这是与标签无关的.
def conditional_wrapper(condition=true, options={}, &block)
options[:tag] ||= :div
if condition == true
concat content_tag(options[:tag], capture(&block), options.delete_if{|k,v| k == :tag})
else
concat capture(&block)
end
end
Run Code Online (Sandbox Code Playgroud)
==用法
<% @items.each do |item| %>
<% conditional_wrapper(item.isolated?, :class => "isolated") do %>
<%= item.name.pluralize %>
<% end %> …Run Code Online (Sandbox Code Playgroud) 我有一个使用bootstrap的RoR应用程序.我正在尝试将fontawesome html图标标记应用于submit_tag帮助程序,但似乎不支持它.当我单击提交时,禁用内容只显示为字符串而不是解释为html,尽管它适用于link_to帮助程序.
这是erb:
<%= form_tag("/home/search", method: "get", class: "form-inline", role: "search", remote: true) do %>
<div class="form-group">
<%= text_field_tag(:term, nil, {:class => "form-control", "data-html" => true, :value => @term}) %>
</div>
<%= submit_tag "Go!", class: "btn btn-transparent", role: "button", 'data-disable-with' => "<i class='fa fa-spinner fa-spin'></i> Searching...".html_safe %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这就是我点击提交时的样子:

它适用于link_to,但是我无法将text_field_tag中的值传递给link_to,否则,我会对该解决方案感到满意.我真的宁愿避免自己编写.ajax方法并使用javascript来操作按钮值.有关如何使用标准FormHelper标签解决此问题的任何建议?提前谢谢了.