标签: partials

如何在Rails 2.3.5中从模型中呈现部分

我有一个Rails 2.3.5应用程序,我试图从模型中呈现几个部分(我知道,我知道 - 我不应该).我这样做的原因是我将Comet服务器(APE)集成到我的Rails应用程序中,需要根据Model的事件(例如after_create)推出更新.

我试过这样做:

ActionView::Base.new(Rails::Configuration.new.view_path).render(:partial  => "pages/show", :locals => {:page => self})
Run Code Online (Sandbox Code Playgroud)

这允许我渲染不是用户助手的简单部分,但是如果我尝试在我的部分中使用link_to,我会收到一条错误说明:

undefined method `url_for' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

我确保传递给"project_path(project)"的对象不是nil.我也试过包括:

include ActionView::Helpers::UrlHelper
include ActionController::UrlWriter
Run Code Online (Sandbox Code Playgroud)

在包含进行上述"render"调用的方法的Module中.

有谁知道如何解决这个问题?

谢谢

ruby ruby-on-rails partials models

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

Nodejs头部有脚本的EJS部分

我正在使用EJS从Nodejs服务器渲染和服务HTML页面.我包含的部分部分包含头部引用的脚本和样式表,但这会导致客户端对同一文件发出多个请求(例如,如果父视图也包含该文件)

例如:

<!-- file: parent.ejs -->
<html>
    <head>
        <link rel="stylesheet" href="public/mystylesheet.css">
        <script src="public/myscript.js">
    </head>
    <body>
        <%- partial("partial.ejs") %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在部分:

<!-- file: partial.ejs -->
<html>
    <head>
        <link rel="stylesheet" href="public/mystylesheet.css">
        <script src="public/myscript.js">
    </head>
    <body>
        This is an EJS partial!
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,客户端加载"mystylesheet.css"两次(不必要),"myscript.js"也是如此.

是否有一种简单的方法(最好使用EJS)来确保在部分需要时包含样式表或脚本,但是如果父视图已经包含了资源则不会?

html resources partials ejs node.js

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

为什么ng-scope被添加到我的局部视图内联的javascript中并使警报无效?

我正在使用AngularJs和模板系统.我想为每个模板添加特定的内联javascript脚本,为选定的选项卡添加警告框(主页|列表|设置)

Html呈现: 但是添加了ng-scope,并且在更改选项卡时没有任何警报.

<script type="text/javascript" class="ng-scope">alert("home")</script>
Run Code Online (Sandbox Code Playgroud)

我在这里提供示例:

http://bit.ly/HWcN1H

或者在这里

带有alert("template1")的plunkr示例存在于template1.html中,但呈现为

<script type="text/javascript" class="ng-scope">alert("template1")</script>
Run Code Online (Sandbox Code Playgroud)

partials angularjs angularjs-scope angularjs-view

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

如何找到视图部分的使用位置?

如何轻松找出 Rails 视图部分的使用位置?

在什么视图、控制器等中

当开发别人编写的应用程序时,这很方便。您不一定知道哪些视图正在使用特定的部分,或者在浏览器中导航应用程序时在哪里可以找到使用该部分的位置。

目前,我正在使用 Sublime Text 编辑器在项目范围内搜索部分名称“form”或“_form”,或“render”,但这会产生不必要的无用结果。

ruby-on-rails partials

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

Rails 在循环中呈现部分

我是 Rails 的新手,我正在尝试在循环中渲染部分内容。

这里,books是一个预先加载到控制器中的数组。

 books.each do |book|
   <%= render 'books/book', :book => book %>
 end
Run Code Online (Sandbox Code Playgroud)

这工作正常。但是当books数组真的很大时,视图完全加载需要时间。有没有其他有效的方法可以实现相同的目标?我也尝试了部分收藏(如这里),但即使如此,书籍的加载时间也没有太大区别。任何建议将不胜感激。谢谢。

ruby-on-rails partials ruby-1.8 ruby-on-rails-2

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

变量传递到部分使用路径

我正在使用本书学习Ruby on Rails .我从这里开始坚持第二次练习.

我的表单部分app/views/users/_form.html.erb看起来像这样:

<%= form_for(@user, url: yield(:path)) do |f| %>
  <%= render 'shared/error_messages', object: @user %>

  <%= f.label :name %>
  <%= f.text_field :name, class: 'form-control' %>

  <%= f.label :email %>
  <%= f.email_field :email, class: 'form-control' %>

  <%= f.label :password %>
  <%= f.password_field :password, class: 'form-control' %>

  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation, class: 'form-control' %>

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我的app/views/users/new.html.erb部分注册视图是这样的:

<% provide(:title, 'Sign …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails partials railstutorial.org

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

把手@partial-block 用法

我一直在尝试将模板传递给部分,如下所述:https : //handlebarsjs.com/guide/partials.html#partial-blocks。例如,我有一个hello.hbs包含以下内容的文件:

Hello
{{> @partial-block }}
Run Code Online (Sandbox Code Playgroud)

我试图按world.html原样包含在另一个文件中:

{{#> hello }}
World!
{{/hello}}
Run Code Online (Sandbox Code Playgroud)

以便它应该呈现:

Hello
World!
Run Code Online (Sandbox Code Playgroud)

但是如果我这样做,我会收到错误The partial @partial-block could not be found。但是,如果我更改hello.hbs为:

Hello
{{ @partial-block }}  <!-- Removed the '>' -->
Run Code Online (Sandbox Code Playgroud)

有用。难道我做错了什么?

先感谢您!

partials handlebars.js

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

使用fields_for的动态内容

我有一个使用has_many关系的嵌套表单.在我的表单视图中,我使用部分字段输入并传递FormBuilder对象.

form.html.haml:

- form_for @record do |f|
  .field
    = container do
      - f.fields_for :strings do |s|
        = render :partial => 'string_fields', :locals => {:s => s}
Run Code Online (Sandbox Code Playgroud)

_string_fields.html.haml:

= s.hidden_field :id
= s.hidden_field :language_id

.field
  %h3
    = t(:name)
  = s.text_field :name, :size => 50

.field
  %h3
    = t(:description)
  = s.text_area :description, :rows => 6
Run Code Online (Sandbox Code Playgroud)

这应该工作; 但是,我想在AJAX中添加功能以使用RJS动态添加另一组字段,当我尝试通过RJS渲染部分时,显然s没有定义(我不知道我通过了什么:locals哈希值).

有没有办法将字段动态地添加到由定义的字段集中fields_for,或者我是否必须重新实现我的部分而不使用帮助程序?

ruby-on-rails partials fields-for

4
推荐指数
1
解决办法
2962
查看次数

rspec视图存根和部分

我正在使用RSpec(Rails 3.2.8上的2.12)测试视图.我正在使用CanCan有条件地在页面上显示某些元素.这需要一个控制器方法'current_user'.在我的一些规范中,我已经能够存根current_user,例如.controller.stub(:current_user).and_return(etc)或view.stub.etc.

这适用于我的一些规格.但我有一对夫妇在哪里工作,我不明白为什么.

它不工作的两个规范测试一个视图,它调用一个部分,在部分内部我访问'current_user'作为一个方法.错误是

undefined local variable or method `current_user' 
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是如何正确地存根方法,以便可以在局部内部访问它们.

应该怎么做?

rspec views partials stubs

4
推荐指数
1
解决办法
2557
查看次数

Rails 4在邮件程序视图中使用部分

我在这里有一个ActionMailer视图中的局部问题.他们只是不工作 - 我不知道,如果我做错了,这是一个错误或根本不支持.

这应该是有效的,因为需要在邮件程序视图中也有DRY代码(从我的测试中,我看到,帮助程序正在工作(在将它们包含到ActionMailer类之后)

我正在使用:Ruby 2.0.0-p247上的Rails 4.0.0

错误信息:

ActionView::MissingTemplate at /events/81/user_invitations
==========================================================

> Missing partial user_invitation_mailer/test_partial with {:locale=>[:en], :formats=>[:text], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. Searched in:
  * "/Users/user/Sites/participate/app/views"
  * "/Users/user/.rvm/gems/ruby-2.0.0-p247/gems/devise-3.4.0/app/views"
Run Code Online (Sandbox Code Playgroud)

但这部分就在那里! - 我不允许上传图片...结构是:

- views
-- user_invitation_mailer
--- _test_partial.html.erb
--- user_invitation.text.erb
Run Code Online (Sandbox Code Playgroud)

细节:

呼叫控制器:

UserInvitationMailer.user_invitation(@invitation).deliver
Run Code Online (Sandbox Code Playgroud)

UserInvitationMailer:

class UserInvitationMailer < ActionMailer::Base
  add_template_helper(MailerHelper) # for testing including helpers.

  def user_invitation(invitation)
    @invitation = invitation
    mail(to: @invitation.email, subject: 'Invitation')
  end
end
Run Code Online (Sandbox Code Playgroud)

user_invitation.text.erb:

Hi <%= @invitation.email %>,

This is a test email see:

<%# test_helper %> …
Run Code Online (Sandbox Code Playgroud)

actionmailer partials ruby-on-rails-4

4
推荐指数
1
解决办法
4988
查看次数