我是一个坏孩子,并在我的部分模板中使用以下语法来设置局部变量的默认值,如果在渲染部分时未在:locals哈希中显式定义值 -
<% foo = default_value unless (defined? foo) %>
Run Code Online (Sandbox Code Playgroud)
直到最近,这似乎工作正常(当时我无法辨别)未通过的变量开始表现得好像它们被定义为nil(而不是未定义).
正如SO上各种乐于助人的人所指出的,http://api.rubyonrails.org/classes/ActionView/Base.html表示不使用
defined? foo
Run Code Online (Sandbox Code Playgroud)
而是使用
local_assigns.has_key? :foo
Run Code Online (Sandbox Code Playgroud)
我正在尝试修改我的方法,但这意味着要更改很多模板.
可以/我应该提前充电并在所有模板中进行此更改吗?我需要注意什么诡计?我需要多努力地测试每一个?
我正在使用SASS部分模块化我的样式表,如下所示:
@import partials/header
@import partials/viewport
@import partials/footer
@import partials/forms
@import partials/list_container
@import partials/info_container
@import partials/notifications
@import partials/queues
Run Code Online (Sandbox Code Playgroud)
有没有办法包括整个partials目录(这是一个充满SASS-partials的目录),如@import罗盘或什么?
我将在哪里放置由多个模型共享的部分文件?我有一个名为的页面crop.html.erb
用于一个模型 - Photo
.现在我想将它用于另一个名为的模型User
.
我可以复制并粘贴代码,但这不是很干,所以我想我会把它移到局部.
由于它是在两个模型之间共享的 - 我会在哪里放置它?
谢谢!
在rails应用程序中,在哪种情况下你会使用partial,你什么时候会使用帮助器?我发现两者非常相似,因为它们代表了标记片段.
围绕这个有约定吗?使用它们的'轨道方式'是什么?
谢谢!
我正在尝试在我的Rails应用程序中使用自定义路由(Ruby 1.9.2 with Rails 3).
这是我的config/routes.rb文件
match '/dashboard' => 'home#dashboard', :as => 'user_root'
devise_for :user do
get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
end
Run Code Online (Sandbox Code Playgroud)
但是在/ login或/ register上提交表单会转到users/sign_in和users/sign_up.我该如何防止这种情况发生.或者甚至更好地确保默认情况下对users/sign_in等的所有请求都转到相关路由而不是Devise生成的默认路由.
另外,我如何使登录表单部分包含在任何控制器中?这样我可以在主页上设置登录页面(主页#index)而不是用户/ sign_in?
我在Mac OSX Snow Leopard上使用Ruby 1.9.2上的Devise 1.1.3和Rails 3.
谢谢!
我希望将我的部分内容作为降价片段.使用标准rails erb模板渲染它们的最简单方法是什么?
理想情况下,我想做这样的事情:
如果我在app/views/_my_partial.md.erb中有部分内容:
My awesome view
===============
Look, I can **use** <%= language %>!
Run Code Online (Sandbox Code Playgroud)
我从这样的观点中引用:
<%= render "my_partial", :language => "Markdown!" %>
Run Code Online (Sandbox Code Playgroud)
我想获得如下所示的输出:
<h1>My awesome view</h1>
<p>Look, I can <strong>use</strong> Markdown!</p>
Run Code Online (Sandbox Code Playgroud) 我想将form_for
对象传递给部分:
<%= form_for @price do |f| %>
...
<%= render :partial => "price_page", :object => @price, :as => :f %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
我打电话的时候:
f.radio_button
Run Code Online (Sandbox Code Playgroud)
带来错误:
undefined method `radio_button' for #<Price:0x3cb1ed0>
Run Code Online (Sandbox Code Playgroud)
我怎么能f
像往常一样使用这部分?
可以在一个单独的HTML中检索多个html部分吗?我有下一个情况:
Template: {header} {main} {footer}
/index: header:"Welcome" main:"welcome text" footer:""
/help: header:"Help title" main:"faq tips" footer"Back to home"
Run Code Online (Sandbox Code Playgroud)
使用ng-include我要从服务器上检索6个html.如果我将在一个html中检索多个部分,那么我将仅从服务器检索2个html,一个用于/ index,一个用于/ help.
谢谢!
更新04/07/12:
我寻求一次更新多个div,并使用独特的html retreive.我不喜欢这个:
function IndexCtrl($scope) {
$scope.mainPage = 'partials/index/index.html';
$scope.headerTemplate = 'partials/index/header.html';
$scope.footerTemplate = 'partials/index/footer.html';
}
Run Code Online (Sandbox Code Playgroud)
在模板中使用ng-includes包括这些部分.我认为这不是正确的方法.还有其他方法吗?
谢谢!
我一直在使用sendFile方法在Express项目中呈现Html.我想在我的项目中使用partials.并且,不要切换到玉.
有没有办法在Express 3.x中使用传统的HTML和partials.我试过ejs,但完全不了解它.