我正在尝试SomeClass
从导入的包中对一个方法进行monkeypatch :
from somepackage import SomeClass
def newmethod(obj, node, **kwargs):
""" """
SomeClass.oldmethod = newmethod
Run Code Online (Sandbox Code Playgroud)
在哪里obj
和node
在默认调用签名SomeClass.oldmethod
:
class SomeClass(object):
def oldmethod(obj, node):
""" """
Run Code Online (Sandbox Code Playgroud)
我知道monkeypatching不是一个好习惯,但我们需要一个解决方法,同时我们解决了一些无法解决的问题.上面的方法很有效,但是我们想用部分函数来做这件事.例如:
from functools import partial
newmethod_a = partial(newmethod, foo='a')
newmethod_b = partial(newmethod, foo='b')
Run Code Online (Sandbox Code Playgroud)
调用部分函数是因为我们需要传递不同的**kwargs.但是当我现在尝试超载时:
SomeClass.oldmethod = newmethod_a
Run Code Online (Sandbox Code Playgroud)
我得到一个与传递的参数数量相关的错误,但它非常特定于我的问题所以粘贴它可能没有帮助...我认为错误与oldmethod
采取两个位置参数(obj, node
)和我的部分的调用签名有关功能不传递到一基准obj
和node
正确.我尝试了不同的结构,如:
newmethod_a = partial(SomeClass.newmethod, foo='a')
Run Code Online (Sandbox Code Playgroud)
对不起,我无法生成一个最小的工作示例.我希望也许专家会从经验中认识到这个问题,并告诉我,如果我在尝试的范围内甚至是可能的partial
.
谢谢
总新手试图通过lynda.com上的rails教程
代码非常简短,与视频完全一样,但我无法让我的页面呈现部分.当我在服务器上运行它时,它根本不会渲染部分,而只是跳过它.没有错误消息.提前致谢
这是edit.html.erb
<%= link_to("<< Back to List", {:action => 'list'}, :class => 'back=link')%>
<div class="subject edit">
<h2>Edit Subject</h2>
<%= form_for(:subject, :url => {:action => 'update', :id=>@subject.id}) do |f| %>
<% render :partial => 'form', :locals => {:f => f} %>
<div class="form-buttons">
<%= submit_tag("Update Subject")%>
</div>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
这是_form.html.erb
<table summary="Subject form fields">
<tr>
<th>Name</th>
<td><%= f.text_field(:name) %></td>
</tr>
<tr>
<th>Position</th>
<td><%= f.text_field(:position) %></td>
</tr>
<tr>
<th>Visible</th>
<td><%= f.text_field(:visible) %></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud) 我想做这样的事情:
require 'erb'
@var = 'test'
template = ERB.new File.new("template.erb").read
rendered = template.result(binding())
Run Code Online (Sandbox Code Playgroud)
但是如何在template.erb中使用partials?
我正在重写设计注册控制器的创建操作.我有两种注册形式,个人或公司,公司有一个名为company_form的字段设置为true,以区分这两种形式.
在表单验证后,我希望呈现正确的表单(以前无论我使用什么形式,它都会回到默认表单).
我有一个问题,只有部分被渲染(显然,因为我只渲染部分),但我需要渲染布局/应用程序文件.
class RegistrationsController < Devise::RegistrationsController
def create
<!-- Other devise code here -->
if resource.company_form
render partial: 'shared/company_signup_form'
else
render partial: '/shared/individual_signup_form'
end
end
end
Run Code Online (Sandbox Code Playgroud)
我试过了
if resource.company_form
render partial: 'shared/company_signup_form', layout: 'layouts/application'
else
render partial: '/shared/individual_signup_form', layout: 'layouts/application
end
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误
Template is missing
Missing partial layouts/_application
Run Code Online (Sandbox Code Playgroud)
当我指定布局时为什么要查找部分_application,如何才能获得正确的布局
谢谢
编辑
阅读它所说的文件
"请注意,partials的布局遵循与常规partials相同的前导下划线命名,并且与它们所属的部分放在同一个文件夹中(不在master layouts文件夹中)."
但我希望应用默认布局
我想传递一个包含原点的局部变量来到特定页面,这个变量只包含一个带有值的符号.
当我使用这个代码时它工作得很完美,原始变量可以在partial中访问:
render :partial => "products", :collection => @products, :locals => {:origin => :gallery}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此代码时,原点未设置且无法在部分中访问:
render @products, :locals => {:origin => :gallery}
Run Code Online (Sandbox Code Playgroud)
这有什么区别?第二行代码是不是像第一行一样呈现部分?
我正在尝试熟悉ASP.net MVC5并正在移植现有网站.
我已经定义了一个默认的共享布局视图,其中包含标题,导航,页脚等内容的几个部分...
我的主页和使用此布局的其他页面之间的唯一区别是主页有一个滑块和一些其他独特的功能.除此之外,布局是相同的.
因此,我不认为它保证创建两个不同的视图并设置主页的布局以使用一个视图,并且当大多数模板相同时,所有其他页面使用另一个页面.
我创建了一个_HomeContentPartial
包含主页唯一内容的部分名称.
只有当我的家(我的家庭控制器上的索引操作)是当前页面时,Razor有条件地包含此部分的最佳方式是什么?
我不确定这是否是Rails特定的问题,因此我也标记了它ruby
.
我event
通过局部渲染记录集合.但是,我发现不同地渲染局部会导致性能差异剧烈.
两个版本都使用完全相同的数据,唯一改变的是用于渲染部分的代码.
为什么heck是一个版本始终比另一个版本快4倍?让我想知道我正在采取什么样的性能......
慢版(总请求时间950毫秒):
<% events.each do |event| %>
<%= render partial: "events/event", locals: { event: event } %>
<% end %>
# Log output
Rendered events/_event.html.erb (1.1ms)
Rendered events/_event.html.erb (1.1ms)
...
Run Code Online (Sandbox Code Playgroud)
更快的版本(总请求时间250毫秒):
<%= render partial: "events/event", collection: events, as: :event %>
# Log output
Rendered events/_event.html.erb (58.7ms)
Run Code Online (Sandbox Code Playgroud) 我试图使用下面的代码渲染部分jbuilder文件
json.(@request, :id)
json.profile do
json.partial! partial: 'users/user_reduced', user: @request.user
end
Run Code Online (Sandbox Code Playgroud)
部分在下面(users/_user_reduced.json.jbuilder)
json.(user, :id, :name, :sex)
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误:
ActionView::Template::Error (undefined local variable or method `user' for #<#<Class:0x007fe4ebc91878>:0x007fe4ebe599f8>):
Run Code Online (Sandbox Code Playgroud)
就像没有设置本地用户变量一样.将局部变量设置为jbuilder部分路径的语法是什么?
我有一些Haml部分,其中许多包含样板
.container
.row
.col-lg-12
当我试图从ala中抽象出来时= partial "site_section"
,我得到:
syntax error, unexpected keyword_end, expecting end-of-input end;end;end;end
Run Code Online (Sandbox Code Playgroud)
我正在使用ruby 2.2.2.
如何在Middleman的Haml部分内渲染出Haml?
谢谢
更新 这显然是某种特殊情况处理我的部分(上图).我有其他部分内部部分渲染就好了.
更新 关于这个repo,布局实际上是:
_site_section:
.container
.row
.col-lg-12
_nested_section:
= partial "site_section"
MOAR (nested) HAML
Run Code Online (Sandbox Code Playgroud)
index.haml:
=partial "nested_section"
我知道它必须进入 <% %>,但我不确定它是否与典型的 forEach/for 循环有很大不同。EJS 站点上的文档非常有限,所以我来到这里。
<% include ../../partials/header %>
<body>
<main>
<h1>List of all quotes</h1>
<ul>
<li> <!-- for loop goes here, inside flounder -->
<%
all quote stuff goes here
author
content
wrap it in a link to its quote page
</li>
</ul>
</main>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)