标签: partial

从另一个模型渲染部分

我有一个为房屋建模的 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 代码。

应用程序/模型/room.rb

class Room < ActiveRecord::Base
  belongs_to :house
  has_many …
Run Code Online (Sandbox Code Playgroud)

model ruby-on-rails render partial

6
推荐指数
1
解决办法
7845
查看次数

Symfony包含部分来自自定义文件夹

表格示例:

<?php include_partial('job/list', array('jobs' => $jobs)) ?>
Run Code Online (Sandbox Code Playgroud)

我在模块文件夹模板中有模块作业和部分_list.php.是否可以在模板文件夹部分中创建并包含该文件夹中的所有部分?如果有可能怎么做呢?谢谢!

php symfony1 partial-views partial symfony-1.4

6
推荐指数
1
解决办法
5797
查看次数

Rails渲染集合在ul li中

我有这个名为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

问题是:

  1. 每当渲染一个集合时,我都必须将渲染放在%ul中
  2. 部分不适用于没有%ul的单个对象

虽然在我的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可能有用,但是

  1. </li><li> 作为间隔符绝不是一段好的代码..
  2. haml不会允许这个)

至于我的第二个问题,一个简单的方法就是渲染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)

collections haml ruby-on-rails render partial

6
推荐指数
1
解决办法
3023
查看次数

如何在使用AJAX单击link_to后在同一页面上呈现部分

我有一份客户名单.每个客户都有一个链接,链接到客户页面并显示他的数据.

我想链接到客户表下方同一页面上的部分呈现.在使用表初始化"页面"时,应加载带有"选择客户"之类的空白页面.

我的客户列表代码:

<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)

ajax asynchronous ruby-on-rails partial

6
推荐指数
1
解决办法
1万
查看次数

使用带有部分对象的 Joblib 内存库

我有一个带有两个参数的函数:

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)

也不会缓存结果。有没有办法在内存库中使用部分对象?

python caching partial joblib

6
推荐指数
0
解决办法
231
查看次数

是否有 Partial 的替代方法来只接受另一种类型的字段而不接受其他类型的字段?

给定具有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?

这在我的代码库中造成了很多问题,因为它根本没有检测到错误的类作为参数传递给函数。

partial typescript

6
推荐指数
1
解决办法
2142
查看次数

为什么部分记录的 Object.values 具有未定义的类型?

从部分记录中提取时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[]。实践中的每一个值都是被定义的,而且除非我遗漏了什么,否则总是会被定义。

显示问题的代码沙盒(使用反应脚手架)可以在此处找到

这似乎可能是类型系统的一些产物,但我想了解发生了什么,以及是否有任何方法可以避免这种行为。

partial typescript

6
推荐指数
1
解决办法
1754
查看次数

重新加载部分(Rails Ajax)

我有一个表单,当我点击提交时,应该更新同一页面上的部分...当我把它放在这里:

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)

它根本不做任何事情.我究竟做错了什么?

ajax ruby-on-rails partial

5
推荐指数
1
解决办法
5883
查看次数

Rails偏模态(从不同模型渲染部分)

当你点击"创建语言"时,我试图将一个部分包含在类似于这个Rails Admin的模态中.

现在因为我还没有真正发现代码是如何工作的,我试着在这个Rails - AJAX模态对话框之间进行混合和某些东西.

问题是,部分现在呈现为模态.但是当我点击"保存"时,验证将返回到"正常"创建新视图,而不是直接在模态中显示验证错误.

  1. 如何直接在弹出模式中显示验证错误?

  2. 当我保存时,我应该以某种方式区分这个模态的保存和普通保存,因为这个部分将从其他地方调用,并且需要将新创建的对象直接设置为下拉列表中的新对象.我想我需要区分响应格式然后使用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中调用一个名为"new_from_sale"的单独操作:

simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|

然后在控制器中,当这个新对象的保存正常时,我重定向到第一个被调用的视图,其中新的id作为param然后填充下拉列表.在else的情况下,当无法保存新对象时,我需要以某种方式显示仍然在该模态中的错误.到目前为止,两者都试图直接渲染部分 …

javascript ajax modal-dialog partial ruby-on-rails-3

5
推荐指数
1
解决办法
5947
查看次数

Rails JS Response,呈现状态和模板?

在我当前的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响应将渲染的部分添加到页面.

我的问题是,有没有办法实现这两个目标?如果没有,在成功创建后,如何使用渲染对象填充页面?

ajax templates rendering ruby-on-rails partial

5
推荐指数
1
解决办法
2545
查看次数