我有一个为房屋建模的 Rails 应用程序。有一个具有许多参数的房屋模型has_many rooms。一个房间有一个house_id和一个名称。我还使用http://github.com/ryanb/complex-form-examples来允许许多灯光并small_appliances添加到房间中。complex-form-example 使用 RJS 和分部来完成此任务。
有一个称为计算器的控制器,用户将使用它来访问应用程序。当按下计算器上的提交按钮时,它会重定向到一个add_rooms页面(位于app/views/calculator/add_rooms.html.erb)页面,用户可以在其中add rooms访问房屋。add_rooms 页面使用部分 from app/views/rooms/_room_form.html.erb. 我无法显示它,因为 Rails 总是在 app/views/calculator 文件夹中寻找内容。
我怎样才能显示这个?另请注意,我在保存房间时需要保存房屋的 id。
这是所有相关代码(我希望):
如果我注释掉这两个add_child_link。页面呈现。但是,当我单击“提交”时,我收到一条新的错误消息:
CalculatorController#add_room 中的 ActiveRecord::AssociationTypeMismatch 预期为 SmallAppliance(#49096610),得到了 Array(#1560620) RAILS_ROOT: C:/Users/ryan/Downloads/react 应用追踪 | 框架跟踪 | 完整追踪 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/associations/association_proxy.rb:263:在`raise_on_type_mismatch'中 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/associations/association_collection.rb:320:在“替换”中 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/associations/association_collection.rb:320:在“每个”中 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/associations/association_collection.rb:320:在“替换”中 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/associations.rb:1322:in `small_appliances=' C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2744:在“发送”中 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2744:in `attributes=' C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2740:在“每个”中 C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2740:in `attributes=' C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2438:在“初始化”中 C:/Users/ryan/Downloads/react/app/controllers/calculator_controller.rb:31:在“新”中 C:/Users/ryan/Downloads/react/app/controllers/calculator_controller.rb:31:在“add_room”中
如果我删除small_application部分,同样的事情也会发生在light上。accepts_nested_attributes_for我认为这与房间模型有关。我添加了下面的代码。我还添加了 house.rb 代码。
class Room < ActiveRecord::Base
belongs_to :house
has_many …Run Code Online (Sandbox Code Playgroud) 表格示例:
<?php include_partial('job/list', array('jobs' => $jobs)) ?>
Run Code Online (Sandbox Code Playgroud)
我在模块文件夹模板中有模块作业和部分_list.php.是否可以在模板文件夹部分中创建并包含该文件夹中的所有部分?如果有可能怎么做呢?谢谢!
我有这个名为Post的模型,idaelly我很想使用一个局部+一个布局来实现以下功能.
渲染单个对象时,输出:
%div= post.body
Run Code Online (Sandbox Code Playgroud)
在渲染集合时,输出:
%ul
%li= post.body
%li= post.body
%li= post.body
Run Code Online (Sandbox Code Playgroud)
目前我有一个部分帖子/ post.haml看起来像: %li= post.body
每当我渲染一个集合时,我都会这样做%ul=render @posts
问题是:
虽然在我的90%的用例中我正在渲染一个帖子的集合,但是对于一个不能作为独立模板使用的帖子来说没有意义.
我以为我可以做点什么
# view
render partial: 'post', collection: @posts, layout: 'list_of_posts'
# list_of_posts
%ul= yield
# posts/post
%li= post.body
Run Code Online (Sandbox Code Playgroud)
如果它工作,这将解决我的第一个问题,但事实并非如此.显然,render_collection不采用布局选项,因此它几乎是我在渲染集合中找到的死胡同.(Spacer_template可能有用,但是
</li><li> 作为间隔符绝不是一段好的代码.. 至于我的第二个问题,一个简单的方法就是渲染div中的所有内容,但是当事情应该在列表中时,我真的不愿意这样做.但为了使其工作,它可能是唯一的清洁解决方案.div.list-of-posts > div.post代替ul.posts > li
我知道我总能做点什么
# view - collection
%ul= render @posts, in_list: true
# view - object
= render @post
# posts/post.haml
- post_counter ||= false
- tag = post_counter …Run Code Online (Sandbox Code Playgroud) 我有一份客户名单.每个客户都有一个链接,链接到客户页面并显示他的数据.
我想链接到客户表下方同一页面上的部分呈现.在使用表初始化"页面"时,应加载带有"选择客户"之类的空白页面.
我的客户列表代码:
<h1>Listing Customers</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th colspan="3">Actions</th>
</tr>
</thead>
<tbody>
<% @customers.each do |customer| %>
<tr>
<td><%= customer.name %></td>
<td><%= link_to 'Show', customer %></td>
<td><%= link_to 'Edit', edit_customer_path(customer) %></td>
<td><%= link_to 'Destroy', customer, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Customer', new_customer_path, class: "button", id: "new_customer" %>
Run Code Online (Sandbox Code Playgroud)
我部分用于展示客户:
<p>
<strong>Name:</strong>
<%= @customer.name %>
<%= @customer.id %>
</p>
<%= link_to 'Edit Customer', edit_customer_path(@customer) %> …Run Code Online (Sandbox Code Playgroud) 我有一个带有两个参数的函数:
def foo(x,y):
# some complicated math
return result
Run Code Online (Sandbox Code Playgroud)
我使用functools库定义了部分:
f1 = partial(foo,1)
f2 = partial(foo,2)
Run Code Online (Sandbox Code Playgroud)
现在我想使用该joblib.Memory库将结果缓存在磁盘中以避免重新计算。
from joblib import Memory
mem = Memory(cachedir = '/tmp')
f1c = mem.cache(f1)
f2c = mem.cache(f2)
res1 = f1c(10)
res2 = f1c(10)
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到警告:
JobLibCollisionWarning: Cannot detect name collisions
for function 'unknown
Run Code Online (Sandbox Code Playgroud)
也不会缓存结果。有没有办法在内存库中使用部分对象?
给定具有x1共同字段的接口或类 A 和 B
interface A {
a1: number;
x1: number; // <<<<
}
interface B{
b1: number;
x1: number; // <<<<
}
Run Code Online (Sandbox Code Playgroud)
并给出实现 a 和 b
let a: A = {a1: 1, x1: 1};
let b: B = {b1: 1, x1: 1};
Run Code Online (Sandbox Code Playgroud)
打字稿允许这样做,即使 b1不是A 的一部分:
let partialA: Partial<A> = b;
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到为什么会发生这种情况的解释:为什么 Partial 接受来自另一种类型的额外属性?
是否可以替代 Partial 只接受另一种类型的字段而不接受其他类型的字段(尽管不需要所有字段)?像StrictPartial?
这在我的代码库中造成了很多问题,因为它根本没有检测到错误的类作为参数传递给函数。
从部分记录中提取时Object.values,这些值是我期望的值和 之间的并集undefined。
const example: Partial<Record<string, number>> = {}
const values = Object.values(example)
// strangely, the typing for values is as follows:
// const values: (number | undefined)[]
Run Code Online (Sandbox Code Playgroud)
相反(number | undefined)[],我希望它是number[]。实践中的每一个值都是被定义的,而且除非我遗漏了什么,否则总是会被定义。
这似乎可能是类型系统的一些产物,但我想了解发生了什么,以及是否有任何方法可以避免这种行为。
我有一个表单,当我点击提交时,应该更新同一页面上的部分...当我把它放在这里:
page.replace_html 'show_cards_div', 'Hello'
Run Code Online (Sandbox Code Playgroud)
它确实如此,当我需要它时显示你好.但是当我把它变成这个......
page.replace_html 'show_cards_div', :partial => "reloadThisPartial"`
Run Code Online (Sandbox Code Playgroud)
它根本不做任何事情.我究竟做错了什么?
当你点击"创建语言"时,我试图将一个部分包含在类似于这个Rails Admin的模态中.
现在因为我还没有真正发现代码是如何工作的,我试着在这个Rails - AJAX模态对话框之间进行混合?和某些东西.
问题是,部分现在呈现为模态.但是当我点击"保存"时,验证将返回到"正常"创建新视图,而不是直接在模态中显示验证错误.
如何直接在弹出模式中显示验证错误?
当我保存时,我应该以某种方式区分这个模态的保存和普通保存,因为这个部分将从其他地方调用,并且需要将新创建的对象直接设置为下拉列表中的新对象.我想我需要区分响应格式然后使用JS将新ID设置为DropDown id?
这里写了一些代码到目前为止.在我包含部分的视图中,它看起来像我调用另一个控制器(因为我在不同的控制器 - 新视图).
$.get('<%= url_for :controller => 'customers', :action => 'new' %>',
function(data) {
$('#customer-modal').html(data);
}
);
Run Code Online (Sandbox Code Playgroud)
然后,"customres"控制器中的new区分不同的请求格式并呈现不同的部分(在本例中为"_ajax_form.html.erb"):
if request.xhr?
render "_ajax_form", :layout => false
Run Code Online (Sandbox Code Playgroud)
在这部分中,我使用"simple_form_for @customer,:remote => true do | f] ....",所以我猜最后提交应该看起来与标准不同,因为这称为正常的"创建"控制器?
<div class="modal-footer">
<%= f.button :submit, :class => 'btn primary' %>
<a id='cancel-form' class= "btn small info">cancel</a>
</div>
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助澄清我做错了什么或者应该怎么做,因为我在Rails和JS/AXAX方面的经验还不太有经验..;)
simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|
然后在控制器中,当这个新对象的保存正常时,我重定向到第一个被调用的视图,其中新的id作为param然后填充下拉列表.在else的情况下,当无法保存新对象时,我需要以某种方式显示仍然在该模态中的错误.到目前为止,两者都试图直接渲染部分 …
在我当前的rails应用程序中,我正在使用ajax上传器库,需要您使用json响应{success:true}以指示文件已成功上载.
在我的应用程序中,文件是图像,上传后我想将其添加到页面中.通常我会做类似的事情:
respond_to do |format|
format.html { redirect_to @resource, :notice => 'Created.' }
format.js
end
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我的JS响应将呈现适当的模板,例如create.js.erb可能会说...
$('#resources').append('<%= escape_javascript( render '@resource' ) %>');
Run Code Online (Sandbox Code Playgroud)
这就是我过去做过像Ajax评论等的事情.现在,要使上传器工作我的respond_to块目前执行此操作:
format.js { render :json => { :success => true } }
Run Code Online (Sandbox Code Playgroud)
这使得上传器工作,但似乎阻止我像往常一样使用Ajax响应将渲染的部分添加到页面.
我的问题是,有没有办法实现这两个目标?如果没有,在成功创建后,如何使用渲染对象填充页面?
partial ×10
ajax ×4
render ×2
typescript ×2
asynchronous ×1
caching ×1
collections ×1
haml ×1
javascript ×1
joblib ×1
modal-dialog ×1
model ×1
php ×1
python ×1
rendering ×1
symfony-1.4 ×1
symfony1 ×1
templates ×1