Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails 3-使用jQueryAjax将_链接到调用分部_Jquery_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Rails 3-使用jQueryAjax将_链接到调用分部

Rails 3-使用jQueryAjax将_链接到调用分部,jquery,ruby-on-rails,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby On Rails 3,我试图通过jquery ajax获得一个指向的链接,以显示部分内容,但似乎无法使其正常工作(编辑:返回空白屏幕),我不确定我遗漏了什么。任何帮助都将不胜感激 我想单击“预览小部件”链接,并让它在divPreview中显示\u Widget.html.erb 根据我的理解,“Preview Widget”链接应该调用actiondef Preview_Widget,它调用Preview_Widget.js.erb,然后在div中呈现部分\u Widget.html.erb 编辑:根据Ignatiu

我试图通过jquery ajax获得一个指向的链接,以显示部分内容,但似乎无法使其正常工作(编辑:返回空白屏幕),我不确定我遗漏了什么。任何帮助都将不胜感激

我想单击“预览小部件”链接,并让它在divPreview中显示\u Widget.html.erb

根据我的理解,“Preview Widget”链接应该调用actiondef Preview_Widget,它调用Preview_Widget.js.erb,然后在div中呈现部分\u Widget.html.erb

编辑:根据Ignatius Reza的建议更新链接

show.html.erb

<%= link_to "Preview Widget", :action => 'preview_widget' , :id => @widget.id, :remote => true %> %>
<div id="preview"></div>
def preview_widget  
    respond_to do | format |  
        format.js {render :layout => false}  
    end
end
<% @widget.videos.each do |video| %>
      <h3><a href='#'><%= video.name %></a></h3>
      <div>
        <object height='316' width='540'>
          <embed  style='border: 1px solid #333333;' height='316' width='540' allowfullscreen='true' allowscriptaccess='always' type='application/x-shockwave-flash' src='<%= video.url %>'>
        </object>
      </div>
  <% end %>
match 'preview_widget' => 'widgets#preview_widget'
预览widget.js.erb

$( "#preview" ).html( "<%= escape_javascript( render( :partial => "widget", :locals => { :widget => @widget} ) ) %>" );

你的问题还没有弄清楚,你“似乎无法让它发挥作用”。。但是从你给我的密码中我看到。。看起来不错,但是您错过了实际的ajax调用

可以通过向“预览小部件”链接添加:remote=>true来添加它,例如:

<%= link_to "Preview Widget", :action => 'preview_widget' , :id => @widget, :remote => true %>
'preview\u widget',:id=>@widget,:remote=>true%>
如果默认行为足够。。或者您可以在application.js上添加自己的自定义ajax调用


请注意,我不认为将“Preview Widget”链接的:id属性设置为@Widget是明智的。。由于它会将widget的字符串表示形式放在一起,它通常看起来像“也许最好将其更改为”widget link-#{@widget.id}”

确定最后将其与以下更改一起使用。
routes.rb(将成员添加到小部件资源中)

show.html.erb(将链接更改为匹配路线)

@widget.id),:remote=>true%>

这现在显示了部分。我仍然不能100%确定以前的代码到底出了什么问题-至少现在它可以正常工作了。

我有一个类似的问题导致了这种威胁,所以我认为在这里分享我的解决方案可能对任何人都有帮助

使用
:remote=>true
时,我收到了一个到
http://localhost:3000/info/about?remote=true
而不是对
http://localhost:3000/info/about

修复很容易,但很难找到

在我的HAML视图中:

触发HTTP请求的错误代码

= link_to( image_tag("icons/information.png", :title => t('menu.info')), :controller => "info", :action => "about", :remote => true )
确定触发AJAX请求的代码

= link_to( image_tag("icons/information.png", :title => t('menu.info')), {:controller => "info", :action => "about"}, :remote => true )
唯一的区别是{花括号}

有趣的是,通过AJAX请求,我得到了
info/about.html
呈现,而没有布局文件。这不是局部的,但接近简想要的。 我希望
info/about.js.erb
能够呈现出来

在InfoController中

  def about
    respond_to do |format|
      format.html # renders ‘views/info/about.html.erb’ inside layout template on HTTP Request
      format.js# renders ‘views/info/about.html.erb’, without layout
    end
  end
-


谢谢我在代码中添加了:remote=>true,并修复了widget链接-#{@widget.id}。现在,当我点击链接时,它是一个空白页面?您使用了哪个版本的rails?我假设您在建议添加“:remote=>true”时使用了3.*。。从3.0开始,rails使用不引人注目的javascipt方法来处理所有与javascript相关的特性。。如果您使用的是2.*。。然后您需要将link_更改为remote_link_,并可以选择删除“:remote=>true”。。
= link_to( image_tag("icons/information.png", :title => t('menu.info')), {:controller => "info", :action => "about"}, :remote => true )
  def about
    respond_to do |format|
      format.html # renders ‘views/info/about.html.erb’ inside layout template on HTTP Request
      format.js# renders ‘views/info/about.html.erb’, without layout
    end
  end
  def about
    respond_to do |format|
      format.html # => ‘views/info/about.html.erb’ inside layout template on HTTP Request
      format.js {render 'about.js'} # => renders ‘views/info/about.js.erb’
    end
  end