部分未通过RJS呈现

时间:2011-06-10 15:23:54

标签: ruby-on-rails

在我的new.html.erb页面中,我使用以下行来呈现部分内容,它可以正常工作。

<%= render :partial => "submissions/player_form", :locals => { :submission => @submission }  %>

现在我想通过RJS

渲染完全相同的部分
<p>Player Type: <%= f.select(:PLAYER_TYPE, $playersList, {:prompt => 'Select the Player Type'} %></p>


<%= observe_field("submission_PLAYER_TYPE", :frequency => 1,
                                               :url => { :controller => 'submissions',
                                               :action => :display_player_form },
                                                :with => "'player='+value") %>

display_player_form.rjs:

  page.replace_html 'observed_assay_form', :partial => 'submissions/player_form', :locals => {:submission => @submission }

什么都没显示!!

我错过了什么吗?

感谢您帮我解决这个问题:)

2 个答案:

答案 0 :(得分:1)

我终于明白了。所以这是我的发现:

  1. 在partial中,包含form_for标记,就像在原始表单中一样 -

    &lt;%form_for @object do | f | %GT;

  2. 在观察字段时使用的操作中,在我的情况下,'display_player_form',创建一个对象的新实例(见下文)

    @object = Object.new

  3. 在您的rjs文件中,输入以下内容:

    page ['div of div']。replace_html:partial =&gt; 'your_partial_name'

  4. 你去......

    希望这有帮助

答案 1 :(得分:0)

我会将display_player_form.rjs重命名为display_player_form.js.erb,其内容如下所示:

$("#observed_essay_form").html('<%=
  escape_javascript(
    render :partial => 'submissions/player_form', :locals => {:submission => @submission }
  )
-%>');
$("img[src$='spinner.gif']:visible").hide(); // optional - hide any visible spinner.gif images

顺便说一句,我使用的是jQuery,而不是Prototype。