Rails3 ujs javascript / html显示未执行

时间:2011-01-31 05:17:15

标签: ruby-on-rails execution ujs

我正在尝试用相当简单的应用程序编写rails3 / ujs。

我想要的是要执行的javascript。 我得到的是在新操作上执行的js或html代码,但显示在编辑操作的页面上。

触发编辑
<%= link_to image_tag("tx.png"), edit_publication_path(p,:format=>:js),
    :remote=>true -%>  

成为

<a data-remote="true" href="/publications/154/edit.js">...</a>

触发新功能
<%= form_tag new_publication_path, :remote=>true, :method=>:get, :class=>:Button do %>  
  <%= submit_tag "Add New Publication" %>  
  <%= select "publication", :type, %w(Journal Report Technical Conference Keynote Chapter Book), {:include_blank => false},:class=>'dropdown' %>  
<% end %>  

成为

<form method="get" data-remote="true" action="/publications/new" accept-charset="UTF-8" >  
  <input type="submit" value="Add New Publication" name="commit">  
  <select name="publication[type]" id="publication_type">  
    <option value="Journal">Journal</option>...<option value="Book">Book</option>  
  </select>  
</form>

控制器一起处理新动作和编辑动作:

def edit
    get_all_tags
    @object = params[:id].blank?? params[:publication][:type].constantize.new() : Publication.find(params[:id])
    respond_to do |format|
      format.js # edit.js.erb
    end
end 

如果我触发“新”操作,则执行javascript,视图显示空字段,准备填写。
如果我触发“编辑”操作,则javascript和html将显示在屏幕上。

有问题的js(edit.js.erb):

$("div#editDialog").dialog('open').
html('<%= render(:layout=>"layouts/edit.html",:template=>"shared/edit.html")%>');

显示为

$("div#editDialog").dialog('open').html('<div class="content edit_page ui-widget"><form accept-charset="UTF-8" ... etc

我也可以使用render_javascript渲染语句然后显示

$("div#editDialog").dialog('open').html('<div class=\"content edit_page ui-widget\">\n...etc

所以仍然没有执行javascript。比较两个动作的日志会显示所有相同的视图。

我错过了什么? (我希望通过写出所有解决方案会突然出现给我,但到目前为止还没有。)

0 个答案:

没有答案