是否可以在不使用respond_to方法的情况下呈现js.erb以响应AJAX请求?
我问的原因有以下几点:
js.erb文件,而不是一个与控制器方法相同的文件(即different.js.erb)以下是一些代码作为示例.
应用程序/视图/职位/ awesome.js.erb:
alert("WOOHOO");
Run Code Online (Sandbox Code Playgroud)
PostsController#创建
def create
@post = Post.new(params[:task])
if @post.save
render :partial => 'awesome.js.erb'
end
end
Run Code Online (Sandbox Code Playgroud)
当create通过AJAX调用该方法时,Rails会抱怨部分丢失:
ActionView::MissingTemplate (Missing partial post/awesome.js, application/awesome.js with {:handlers=>[:erb, :builder, :coffee, :haml], :formats=>[:js, "application/ecmascript", "application/x-ecmascript", :html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:en, :en]}. Searched in:
Run Code Online (Sandbox Code Playgroud) ajax renderpartial ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我现在开始使用rails,我只想问一下.我需要在一个ajax调用中呈现两个部分:
我有以下控制器:
# GET /hosts/1
# GET /hosts/1.json
def show
@host = Host.find(params[:id])
respond_to do |format|
format.html #show.html
format.js
format.json { render :json => @host }
end
end
Run Code Online (Sandbox Code Playgroud)
和相应的模板(show.js.erb):
$('#tabs-1').html("<%= escape_javascript(render @host) %>");
Run Code Online (Sandbox Code Playgroud)
还有一个名为_host.html.erb的部分文件
这一切都很好.模板"_host.html.erb"在div tabs-1中呈现,但现在我需要在不同的id(#tabs-2)中添加一些其他部分模板,但是使用相同的@host我该怎么做?默认情况下,render @host方法将使用模板文件"_host.html.erb".我如何调用另一个像_host2.html.erb并具有相同的@host实例?
谢谢,Joao
好的一天,所有.
我知道这对于MVC而言是一个非常基本的问题,但我不能为我的生活得到@ Html.RenderPartial不给我错误.我正在使用VB.NET和Razor.我在网上找到的大多数例子都是用c#编写的,这对我来说并不难转换,但这个简单的例子让我感到难过.这是在我的索引视图中,由_Layout.vbhtml呈现:
@Section MixPage
@Html.RenderPartial("_MixScreen", ViewData.Model)
End Section
Run Code Online (Sandbox Code Playgroud)
上面的表达式不会产生值.
今天早上我已经看了很长一段时间,我所采用的例子如下:
最终,我要做的是从控制器返回并更新模型到局部视图:
Function UpdateFormulation(model As FormulationModel) As ActionResult
model.GetCalculation()
Return PartialView("_MixScreen", model)
End Function
Run Code Online (Sandbox Code Playgroud)
并且该控制器是从javascript中的表达式调用的:
function UpdateResults() {
jQuery.support.cors = true;
var theUrl = '/Home/UpdateFormulation/';
var formulation = getFormulation();
$.ajax({
type: "POST",
url: theUrl,
contentType: "application/json",
dataType: "json",
data: JSON.stringify(formulation),
success: function (result, textStatus) {
result = jQuery.parseJSON(result.d);
if (result.ErrorMessage == null) {
FillMixScreen(result);
} else {
alert(result.ErrorMessage);
}
},
error: function (xhr, result) {
alert("readyState: " + …Run Code Online (Sandbox Code Playgroud) 我想在Ruby-on-Rails中显示页面中的项目列表.我使用偏爱
在我的index.html.erb文件中我有:
<%= @lista = News.find(:all, :order => Document::COL_DATE + ' DESC, id DESC')
render :partial => "newsitem",
:layout => "list_news",
:spacer_template => "spacer",
:collection => @lista
%>
Run Code Online (Sandbox Code Playgroud)
在_list_news.html.erb我有:
<div class="news">
<%= yield %>
</div>
Run Code Online (Sandbox Code Playgroud)
在_spacer.html.erb 我有<hr/>
在_newsitem.html.erb我有
<%= newsitem_counter + 1 %>
<!-- Code to print details for one item -->
Run Code Online (Sandbox Code Playgroud)
问题是它多次打印列表:
如果列表有3个项目,则显示3次:1,2,3,1,2,3,1,2,3.
如果它有7个项目,那么这些项目将被打印7次.
我的代码有什么问题?
如何只重新加载页面上的div id?我只需要重新加载某个div.
在我的控制器中我有
def mycontrolleraction
...
render(:update) do |page|
reload_only_the_div('adiv'), :controller => 'my_controller'
end
end
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我有一个循环
<ul id="news-list" class="thumbobs-list">
@foreach (var item in Model.News) {
@Html.Partial("RenderNews/" + item.TypeString, item)
}
</ul>
Run Code Online (Sandbox Code Playgroud)
使用像这样的部分
@model Web.Models.DataModel.NewsItem
@{ Layout = null; }
<li class="news-item @Model.TypeString.ToLower()" id="id-@Model.Id">
<h3 class="headline">
Example News headline.
</h3>
<p class="timestamp">@Model.TimeString</p>
</li>
Run Code Online (Sandbox Code Playgroud)
这很棒
但是当我用css去风格时,我遇到了一个导致问题的隐藏空白字符
在每个部分空间前面,U + FEFF和另一个空间导致设计问题.
有没有人见过这个?
根据上述主题,我对数据的返回有些困惑.因此,当我尝试将渲染局部视图数据从我的控制器返回到AJAX时,代码将如下所示.
JQuery AJAX:
$.ajax({
url: "<?php echo $this->createUrl('ajaxrequest');?>",
type: "POST",
data: {affordableCarPrice: ccarprice},
success: function(data){
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
Yii控制器
public function actionAjaxrequest(){
$carListingView[] = $this->renderPartial("_budgetNewCarsListing", array('newCarListing' => $newCarListing), true);
$carListingView[] = $this->renderPartial("_budgetUsedCarsListing", array('usedCarListing' => $usedCarListing), true);
var_dump($carListingView);
}
Run Code Online (Sandbox Code Playgroud)
控制器内部的代码,我最小化它,当我记录返回数据时,它给了我正确的.但是,当我在控制器中使用json_encode数组时,我回去查看返回数据,它给了我错误的数据.
尽管我在JQuery ajax中设置了dataType:'json'和contentType:"application/json; charset = utf-8".或标题('Content-type:application/json'); 在控制器中.它仍然返回错误的数据.
需要帮助非常糟糕,因为我差不多2天就解决了这个问题.:(
是否可以在@using(Ajax.BeginForm)代码块中使用@ Html.RenderPartial?如果我使用@ Html.RenderPartial它不起作用,如果我将整个razor代码直接放在@using(Ajax.BeginForm)块中,它就可以工作.
任何人都可以建议是否可能?
我有一个返回partialview的动作,我想将动作结果呈现给字符串,我尝试了很多关于这个主题的其他线程的示例,但都有相同的行为,执行de View但不是动作,这是可能的?
示例:1)操作 - 呈现为字符串的部分视图
public PartialViewResult Email(string Subject, string Body)
{
ViewBag.Subject = Subject;
ViewBag.Body = Body;
ViewBag.ExtraData = Session["ExtraData"];
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
2)部分视图
@{
Layout = null;
string Subject = (string)@ViewBag.Subject
string Body = (string)@ViewBag.Body
}
<html>
<head>
<title>@Subject</title>
</head>
<body style="margin:0px">
@Body
</body>
Run Code Online (Sandbox Code Playgroud)
3)控制器类获取字符串动作结果
var emailHTML = RenderViewToString(ControllerContext, "Email", new string[] { subject, msg });
Run Code Online (Sandbox Code Playgroud)
4)来自stackoverflow线程的Helper方法
public static string RenderViewToString(ControllerContext context, string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = context.RouteData.GetRequiredString("action");
ViewDataDictionary viewData = new ViewDataDictionary(model);
using …Run Code Online (Sandbox Code Playgroud) 我有一个索引页面:
@model AlfoncinaMVC.Models.VentaIndexViewModel
@{
ViewBag.Title = "Ventas";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script>
var d = 1;
setInterval(function () {
d++;
$('#testLabe').text(d);
$.ajax("Ventas");
}, 1000 * 1 * 1);
</script>
<div id="ventasTable">
@{ Html.RenderPartial("_VentasTable"); }
@*@Html.Partial("_VentasTable")*@
</div>
<label id="testLabe"></label>
Run Code Online (Sandbox Code Playgroud)
部分视图(_VentasTable):
@model AlfoncinaMVC.Models.VentaIndexViewModel
<table>
<thead>
</thead>
<tbody>
@foreach (var item in @Model.Ventas)
{
<tr>
<td>
@item.nombreArticulo
</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
有了这个控制器:
public ActionResult Ventas()
{
var db = new AlfonsinaEntities();
var ventas = db.Set<Venta>();
var vm = new VentaIndexViewModel
{
Ventas …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc renderpartial asp.net-mvc-partialview asp.net-mvc-4
renderpartial ×10
ajax ×3
asp.net-mvc ×2
jquery ×2
razor ×2
action ×1
c# ×1
collections ×1
erb ×1
rjs ×1
unicode ×1
vb.net-2010 ×1
yii ×1