在我的案例中使用相同的形式部分创建和编辑新建和预览.部分看起来有点像这样(我使用HAML)
=form_tag ({:action => params[:action]}, :multipart => true)
=text_field :newsletter, :title
=text_area :newsletter, :body
=file_field :newsletter,:attachment
-if params[:action] == "preview"
=button_to "select contacts and send", :action => "contacts"
=submit_tag "save and preview"
Run Code Online (Sandbox Code Playgroud)
但在html输出中
...
<input type="submit" value="select contacts and send"/>
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/>
<input type="submit" value="save and preview" name="commit"/>
...
Run Code Online (Sandbox Code Playgroud)
为什么button_to没有生成按钮形式?
一个解决方案是将按钮保持在局部外,每个窗体只有1个,但是如何在同一个窗体中有2个按钮?
编辑:另一个解决方法是隐藏的复选框,如果按下button_to,则由javascript设置并提交表单,在控制器中将它们分开
我试图弄清楚在其中生成一些html和嵌套内容的最简洁方法.使用HAML.基本上我想做的事情如下:
= block_large
This is some nested content
Run Code Online (Sandbox Code Playgroud)
这应该产生:
<div class="block large">
<img src="block_large_carat.gif" class="block_large_carat">
This is some nested content
</div>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何实现这一目标.谐音?帮手?我对如何嵌套我想要的任何内容感到困惑.试图保持我的HAML DRY并且不想一遍又一遍地明确声明图像标签.
有没有办法在SASS中访问Ruby变量,还是我必须为它创建一个自定义函数?
我想要做的是为每个用户生成一个样式表,所以在控制器中,我做了类似的事情:
def show
respond_to do |format|
format.css{render :partial => "styles"}
end
end
Run Code Online (Sandbox Code Playgroud)
然后在视图名称_styles.haml我这样做:
:sass
#header
:background url(user.banner.url)
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
*显然不是:http://sass-lang.com/docs/yardoc/file.FAQ.html#q-ruby-code
除了我们做的'脏'代码修复之外还有其他方法(我们将_styles部分转换为rhtml然后)
#header {
background: #efefef url(<%= @company.settings.banner.url %>);
}
Run Code Online (Sandbox Code Playgroud)
haml有这种方法吗?
如何正确缩进代码?
应用程序/视图/布局/ shared.html.haml:
= render :partial => "shared/head"
= yield
= render :partial => "shared/footer"
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/共享/ _head.html.haml:
!!!XML
!!!1.1
%html{"xml:lang" => "pl", :xmlns => "http://www.w3.org/1999/xhtml"}
%head
%title
some title
%body
.container
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/共享/ index.html.haml:
%p
Hello World!
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/共享/ _footer.html.haml:
.footer
Some copyright text
Run Code Online (Sandbox Code Playgroud)
呈现的HTML输出:
<!DOCTYPE html>
<html xml:lang='pl' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>
some title
</title>
</head>
<body>
<div class='container'></div>
</body>
</html>
<p>
Hello World!
</p>
<div id='footer'>
Some copyright text
</div>
Run Code Online (Sandbox Code Playgroud) 如何在HAML中编写此ERB
<%= some_ruby_code %>:
# OR
<%= some_ruby_code %><br />
Run Code Online (Sandbox Code Playgroud)
我可以:
=some_ruby_code + ":"
# and
=some_ruby_code
%br
Run Code Online (Sandbox Code Playgroud)
但我不想在这里连接,我想把它写在内联:
(=some_ruby_code):
# and
(=some_ruby_code)%br
Run Code Online (Sandbox Code Playgroud) 我正在寻找将整个HTML目录转换为HAML,以便文件具有相同的名称,但具有新的扩展名.
html2haml file.html.erb file.haml
Run Code Online (Sandbox Code Playgroud)
我可以运行一个循环,以便我可以一次性转换所有这些文件,以便名称相同,只是扩展名被更改?
我的文件:
continue_login.html.erb
expired_trial.html.erb
expired_trial.mobile.erb
login.html.erb
login.mobile.erb
recover_password.html.erb
signup.html.erb
trial_expires_soon.html.erb
trial_expires_soon.mobile.erb
Run Code Online (Sandbox Code Playgroud) 使用Redcarpet,当我在我的降价中包含类似下面的内容时,它不会考虑任何换行符或缩进.我在线的末尾尝试了两个空格.代码之间的额外行.似乎没什么用.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
```
Run Code Online (Sandbox Code Playgroud)
我知道了:
<?xml version="1.0" encoding="UTF-8"?> <hash> <money>3</money> </hash>
Run Code Online (Sandbox Code Playgroud)
以下是Redcarpet设置:
Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :fenced_code_blocks => true, :no_intra_emphasis => true, :lax_html_blocks => true)
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来使线条正确断开并保留缩进,就像在这里或在GitHub上一样?
更新 - 源代码如下:
<pre><code><?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
</code></pre>
Run Code Online (Sandbox Code Playgroud) 以下代码正在运行
-@items.each do |item|
%tr
%td
=item.quantity
times
%td= item.product.title
end
Run Code Online (Sandbox Code Playgroud)
但是我想用{ }而不是do ... end.可能吗?
-@items.each { |item|
%tr
%td
=item.quantity
times
%td= item.product.title
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它会引发异常.我做错了什么?
我正在使用一个模板,允许您将列表项标记为current(使用class=current),在导航栏中突出显示它.
在HAML中,这看起来像:
%li.current
Menu item A
%li
Menu item B
%li
Menu item C
Run Code Online (Sandbox Code Playgroud)
我在Sinatra视图中有这个代码,并希望以编程方式添加class=current,取决于参数到视图.
我该如何以最好的方式做到这一点?
目前,我这样做:
- if section == "pages"
%li.current
%a{:href => "#pages"} Pages
- else
%li
%a{:href => "#pages"} Pages
Run Code Online (Sandbox Code Playgroud)
这感觉太冗长了.
是否有一个简单的HTML预处理器可用于现有HTML代码,而我不需要修改现有html以符合预处理器语法?
我正在开发一个移动应用程序,其中有几个用html构建的页面,但是我开始遇到这样的问题:在更改类似内容(页眉,页脚等)时,我不想更新每个页面,我不想复制内容并具有不匹配项,而是我想使用具有include方法(类似于php的功能)的预处理器,以便可以包含这些相似的内容。
我看过诸如HAML和Jade之类的东西,但是似乎它们具有严格的语法,您需要遵循缩进以及对HTML进行排序或编辑以在每行中包含管道,否则将无法编译。
就像我说的那样,我已经有html了,我想将HTML剪切并粘贴到不同的文件中,包括它们并坚持该工作流程,因为我认为这是最简单的。
但是,如果有人有其他想法,我也可以解决我的情况,这也受到欢迎。