我的应用程序有一个选择框供用户选择"场地".正如您所料,此选择框位于表单中.我还在页面的某个位置通过AJAX创建了一个新的场地.创建新场地后,我想更新场地选择框以反映这一点.
我的解决方案是将选择框放在部分中,并从控制器中的create动作渲染部分.
<div id="venue_select" style="clear: both;">
<%= render :partial => 'venue/venue_select_box' %>
</div>
Run Code Online (Sandbox Code Playgroud)
部分看起来像这样:
<%= f.collection_select :venue_id, @user_venues, :id, :name, :prompt => 'Select a venue' %>
Run Code Online (Sandbox Code Playgroud)
其中f是表格参考:
<% form_for :shows do |f| %>
Run Code Online (Sandbox Code Playgroud)
问题是f在partial中未定义,所以我得到一个错误.一种解决方案是包含整个表单,但我觉得这不应该是必要的,因为我没有更新整个表单.关于如何解决这个问题的任何想法?
当您使用Html.RenderPartial时,将获取您要呈现的视图的名称,并在该位置呈现它的内容.
我想实现类似的东西.我希望它获取您要呈现的视图的名称,以及一些其他变量,并在容器中呈现内容.
例如:
public static class WindowHelper
{
public static string Window(this HtmlHelper helper, string name, string viewName)
{
var sb = new StringBuilder();
sb.Append("<div id='" + name + "_Window' class='window'>");
//Add the contents of the partial view to the string builder.
sb.Append("</div>");
return sb.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
更新:请给我负面投票,因为问题是我将文件命名为_stylesheet.html.erb而不是_stylesheets.html.erb.我以为我检查了拼写,但显然我没有.我为浪费每个人的时间而道歉,感谢您的投入.
嗨,
我正在学习rails,我开始使用Ruby on Rails教程 - Michael Hartl的示例学习Rails.这是一本正在进行中的书,他慷慨地将这些书放在网上.我目前处于局部部分,我看到一个奇怪的问题,我自昨晚以来一直试图解决.我按照部分部分中的说明操作,但是我收到以下错误:
ActionView::MissingTemplate in Pages#home
Showing app/views/layouts/application.html.erb where line #6 raised:
Missing layout layouts/_stylesheets.erb in view path app/views
Extracted source (around line #6):
3: <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
4: <head>
5: <title><%= title %></title>
6: <%= render 'layouts/stylesheets' %>
7: </head>
8: <body>
9: <div class="container">
Run Code Online (Sandbox Code Playgroud)
这是跟踪:
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/paths.rb:66:in `find_template'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/partials.rb:236:in `_unmemoized__pick_partial_template'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/memoizable.rb:84:in `_pick_partial_template'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/partials.rb:184:in `render_partial'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/base.rb:276:in `render'
/media/documents/Dropbox/Projects/rails/sample_app/app/views/layouts/application.html.erb:6:in `_run_erb_app47views47layouts47application46html46erb'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/renderable.rb:34:in `send'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/renderable.rb:34:in `render'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/base.rb:306:in `with_template'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/renderable.rb:30:in `render'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/template.rb:205:in `render_template' …Run Code Online (Sandbox Code Playgroud) 我有一个Ruby on Rails(2.3.5)应用程序和一个APE(Ajax Push Engine)服务器.在Rails应用程序中创建记录时,我需要将适用通道上的新记录推送到APE服务器.可以通过控制器的创建操作在传统路径中在rails应用程序中创建记录,也可以由多个事件计算机创建记录,这些事件计算机在看到满足特定条件的数据时不断监视各种输入流并创建记录.
在我看来,将数据推送到APE服务器(然后将其推送到客户端)的代码的最佳/最合适的位置在Model的after_create挂钩中(因为并非所有记录创建都将流经控制器的创建动作).
最后需要注意的是,我想将一段格式化的HTML推送到APE服务器(而不是数据的JSON表示).我想这样做的原因是1)我已经有逻辑在现有的部分中产生所需的布局2)我不想创建部分的javascript实现(javascript采用JSON对象并创建所有的HTML周围它的演示).这很快就会成为维护的噩梦.这个问题是它需要在模型中"渲染"部分(我无论如何都无法做到,因为当它们以这种方式渲染时似乎无法访问助手).
无论如何 - 只是想知道组织所有这些的正确方法是什么.
谢谢
我计划的功能是根据从select标签中选择的数字插入一些表单元素.
我有一个名为number_of_passengers的选择标签,我打算为所选数字动态附加新的乘客字段.假设我从number_of_passengers中选择2,那么2个表单应该出现在字段集中.这些表格包含姓名,年龄等.
我试过这样:
并且只是将它转换为haml-speak但是每当我使用:javascript标签时我都会收到错误.我也不认为一旦我进入javascript标签就可以"逃脱"
:javascript
$('#number_of_passengers').change(function() {
var $num_of_passengers = $(this).val();
for($i=0; $i<$num_of_passengers;$i++) {
$('.passenger-info ul').append('<%= escape_javascript( render :partial => "new_passenger", :locals => {:booking => @booking }) %>');
}
})
Run Code Online (Sandbox Code Playgroud)
因为我在form_for中,如何将@booking变量传递给本地?看起来真的很复杂,而且我打算从循环20次(20个最大乘客)中做出肮脏的方式,然后根据所选的数字隐藏/显示它们.但那太脏了你不觉得吗?
我创建了一个区域,可以处理我们所有开发产品中的一些通用的东西,就像登录,HTML帮助器等.在该区域内,我有一个局部视图,我试图在该区域之外引用.我已经注册了该地区
public class Routes : AreaRegistration
{
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Common_default",
"Common/{controller}/{action}/{id}",
new {
controller = "Account",
action = "Index",
id = UrlParameter.Optional
});
}
public override string AreaName
{
get { return "MvcCommons"; }
}
}
Run Code Online (Sandbox Code Playgroud)
现在在常规项目中,我试图在MvcCommons区域中引用一个视图......
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>TestGrid</h2>
<% Html.RenderPartial("jQGridTable", ViewData.Model); %>
Run Code Online (Sandbox Code Playgroud)
但我一直认为没有找到视图.之前,在创建MVC Commons项目时,我收到了查看错误,但错误告诉我它在区域文件夹和默认视图文件夹中都有查看.这次,我只获取默认文件夹.有没有办法实现这个目标?
感谢大家!
我想翻译我的应用程序的视图,因为我正在使用partial来为每个视图呈现标题,如下所示:
<%=t "#{controller.controller_name.capitalize} #{controller.action_name}" %>
......我一直在努力翻译它们.如何翻译controller.action_name自定义翻译文件?
我试图访问这样的动作名称:
parkings:
index: "Parkings index"
new: "New %{model}"
Run Code Online (Sandbox Code Playgroud)
它的许多不同的变化,但每一个都失败了.你可以帮帮我吗?
这是我的控制器的一个片段:
def new
@parking = Parking.new
end
def create
@parking = Parking.new(parking_params)
if @parking.save
redirect_to @parking, notice: t(:parking_created)
else
render action: 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
谢谢.
在ASP.NET MVC中,有什么区别:
Html.Partial and Html.RenderPartial
Html.Action and Html.RenderAction
Run Code Online (Sandbox Code Playgroud) 这是我的文件夹结构

我想从我对我所在地区的看法中给出一个部分观点
所以我有这个辅助方法,对吗?
def table_form_field(name_or_options = nil, *args, &block)
# ...
render :partial => "snippets/table_form_field", :locals => options
end
Run Code Online (Sandbox Code Playgroud)
这很好,但有时我想将它与表单生成器一起使用,为此我必须这样调用它:
table_form_field(:foo, :form_builder => f) do |name|
f.text_field name
end
Run Code Online (Sandbox Code Playgroud)
必须手动指定 :form_builder 很烦人。所以我的目标是扩展ActionView::Helpers::FormBuilder并添加一个新方法,如下所示:
class ActionView::Helpers::FormBuilder
def table_form_field(name_or_options, options, &block)
if name_or_options.is_a?(Hash)
name_or_options[:form_builder] = self
else
options[:form_builder] = self
end
# But... how can I call the helper?
# Hmm, I'll try this:
klass = Class.new do
include ApplicationHelper
end
klass.new.send(:table_form_field, name_or_options, options, &block)
# Thank you, Mario, but your princess is …Run Code Online (Sandbox Code Playgroud) renderpartial ×10
c# ×3
asp.net-mvc ×2
.net ×1
asp.net ×1
comet ×1
formbuilder ×1
forms ×1
haml ×1
html-helper ×1
jquery ×1
partials ×1
rails-i18n ×1
renderaction ×1
ruby ×1