我试图在ajax调用中执行以下操作
index.js.erb的
$("#dialog").text("<%= render("index") %>")
Run Code Online (Sandbox Code Playgroud)
它告诉我在我的js控制台中有一个未终止的字符串文字(这是真的,因为部分中有引号和空格.
我试图使用escape_javascript,但它然后显示部分代码.我也试过调用raw(escape_javascript(render("index"))没有成功.
我认为我需要做的就是逃避双引号并删除空格.这有功能吗?
干杯蒂姆
我想创建一个可以在加载页面后使用AJAX调用的通用控制器,并根据控制它的控制器更新页面上的不同内容.
目的是允许更好的页面和片段缓存,同时为用户显示自定义元素.
我的框架看起来像这样:
controllers/general_ajax_controller.rb
views/general_ajax/on_page_load.js.coffee
./_update_some_stuff.js.coffee
Run Code Online (Sandbox Code Playgroud)
on_page_load控制器中的操作处理逻辑,确定要加载哪些部分,视图将呈现部分.
在on_page_load.js.coffee视图中我有这个代码(简化):
<%= render "update_some_stuff" %>
Run Code Online (Sandbox Code Playgroud)
哪个应该呈现部分.相反,我得到这个错误:
ActionView::Template::Error (SyntaxError: Reserved word "function" on line 2):
app/views/general_ajax/on_page_load.js.coffee:1:in `_app_views_general_ajax_on_page_load_js_coffee___2304196970850216490_70321203283120'
Run Code Online (Sandbox Code Playgroud)
我认为coffeescript是在将它包含在视图中之前编译的(这是咖啡并且不支持编译的js)
如果我将on_page_load视图的扩展名更改为.js.erb然后它可以工作.(奇怪的是,我必须在它运行之前重启我的服务器,你知道为什么吗?)
你认为这是coffeescript中的问题还是不好的做法,因此不受支持?
作为一个侧面讨论,您如何看待我的动态编程方法?
我一直在关注Redmine插件教程并阅读Hooks页面,但我仍然无法使用render_on关键字或其他方式使我的插件部分渲染.
这是我放弃我的部分:
app
??? views
??? issues
? ??? _issue_mail_settings_form.html.erb
??? projects
??? _mail_settings_form.html.erb
Run Code Online (Sandbox Code Playgroud)
这是我的类render_on,其中包含关键字,该关键字位于以下lib目录中:
class MailSettingIssueHooks < Redmine::Hook::ViewListener
render_on :view_issues_form_details_bottom,
:partial => "issues/issue_mail_settings_form"
end
Run Code Online (Sandbox Code Playgroud)
在init.rb我只是require 'mail_setting_issue_hooks'.
如果我像这样加载Redmine,我无法查看页面是否有任何问题 - 我只是得到404错误.请求的控制台输出在这里,虽然看起来不太有用.
如果我定义一个名为view_issues_form_details_bottomin 的方法MailSettingIssueHooks,它返回一个字符串,它正确呈现.
render_on关键字如何决定在哪里查找部分,以及如何使其工作?
我正在做 ruby 教程,目前在清单 5.9 上。部分内容没有显示在我的app/views/layouts目录中
这是代码,我在 OSX 10.8 上使用 Rails 1.8.7。我正在使用rvm并通过brew install安装:
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all",
"data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
<%= render :partial =>'layouts/shim' %>
</head>
<body>
<%= render :partial => 'layouts/header' %>
<div class="container">
<%= yield %>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我完全按照教程进行操作,每隔一段时间我就需要进行调整以使用 1.8.7 而不是 1.9。教程说要做
<%= render'layouts/header' %>
Run Code Online (Sandbox Code Playgroud)
那不起作用,所以我尝试了
<%= render :partial => 'layouts/header' %>
Run Code Online (Sandbox Code Playgroud)
并且部分仍然没有出现。
如果partial与另一个.eex文件位于同一文件夹中,则可以运行render "filename.html",但如果它位于子文件夹中,该怎么办?在我的例子中,我有一些部分包含一些SVG图标的HTML.我不希望这些文件弄乱主模板目录为我的控制器(我宁愿让他们在templates/pages/icons比templates/pages).但是,如果它们与.eex呈现它们的文件不在同一目录中,则按名称引用它们不起作用,也不会这样做render "icons/filename.html".处理这个问题的正确方法是什么?
在rails中有一种方法可以重新加载一个div的div
调节器
def home
@events = []
end
def ajax_load_events
...
@band = Band.find_by_name(@artist)
begin
artist = Bandsintown::Artist.new({
:name => @artist
})
@events = artist.events
rescue Bandsintown::APIError
@events = [] #this will ensure that if an error happens from the bandsintown api, we'll catch the error
end
end
Run Code Online (Sandbox Code Playgroud)
HTML
<div class="field disable_color">
<label for="search">Select a Song</label>
<input type="search" name="request[song]" id="request_song" value="" />
</div>
<tbody class="load_events">
<%= render :partial => 'event', :collection => @events %>
</tbody>
Run Code Online (Sandbox Code Playgroud)
局部
<% @events.each_with_index do |event, …Run Code Online (Sandbox Code Playgroud) 我有2个这样的视图模型:
public class ViewModel1 // maps to Model1
{
public string ViewModel1Desc { get; set; }
public ViewModel2 ViewModel2 { get; set; }
public ScheduleMasterEditViewModel()
{
ViewModel2= new ViewModel2();
}
}
public class ViewModel2 // maps to Model2
{
public string ViewModel2Desc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望有一个ViewModel2的部分页面,并将其包含在ViewModel1的创建页面中:
Create.cshtml看起来像这样
@model ViewModels.ViewModel1
@using (Html.BeginForm()) {
@Html.EditorFor(model => model.ViewModel1Desc )
@Html.Partial("~/Views/ViewModel2/_ViewModel2Create.cshtml", Model.ViewModel2)
}
Run Code Online (Sandbox Code Playgroud)
_ViewModel2Create.cshtml看起来像
@model ViewModels.ViewModel2
@Html.EditorFor(model => model.ViewModel2Desc )
Run Code Online (Sandbox Code Playgroud)
问题是,在Model1的Create控制器上,没有任何内容绑定到ViewModel1.ViewModel2
我是以正确的方式做到这一点,还是应该写出所有这样的字段:
我正在尝试一些不同的方法来定义并将局部变量传递给partial,但它一直说它未定义:
在显示文件中:
<% @startups.each do |startup| %>
<%= render :partial => "profile/startup" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
部分:
<%= simple_form_for [@commentable, @comment], :remote => true do |form| %>
<%= form.input :content, label: false, :input_html => { :id => "#{startup.user_id}" } %>
<%= form.submit "Submit" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这些是我尝试传递变量的其他方法,但仍然未定义:
<%= render :partial => "user_comments/uac", object: startup, as: startup %>
<%= render :partial => "user_comments/uac", collection: startup, as: startup %>
<%= render :partial => "user_comments/uac", :locals => {:startup => startup} %>
Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails parameter-passing partials ruby-on-rails-4
如何通过标记调用将自定义变量发送到部分变量.
<%= partial (:contentHeader, :title=>"Title Goes here") %>
/*trying to send a variable named title with "Title Goes Here" to the partial*/
Run Code Online (Sandbox Code Playgroud)
部分是这样的:
<div class = "contentHeader">
<h2><%=title%></h2>
</div>
Run Code Online (Sandbox Code Playgroud)
所以输出结果应该是
<div class = "contentHeader">
<h2>Title Goes Here</h2>
</div>
Run Code Online (Sandbox Code Playgroud) 在我的Rails 4.2.1应用程序中我Posts和Comments(嵌套在其中Posts):
# config/routes.rb
resources :posts do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
我有以下评论部分:
# app/views/comments/_comment.html.erb
<%= comment.body %>
Run Code Online (Sandbox Code Playgroud)
我试图在Posts视图中渲染该部分:
# app/views/posts/show.html.erb
<% @comments.each do |comment| %>
<%= render 'comments/comment', :locals => { :comment => comment } %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
问题是我在尝试渲染部分时遇到了未定义的局部变量或方法"注释"错误.
我对Rails很新,但它看起来像我正在将comment变量正确传递给部分.我错过了一些明显的东西吗
谢谢
更新
我正在寻找文档中的错误位置.请参阅http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials
