AJAX部分没有在Rails 3.2中呈现

时间:2014-11-06 17:39:49

标签: jquery ajax ruby-on-rails-3

我有一个注册系统,在测试阶段,需要邀请才能注册。用户请求邀请,然后发送带有代码嵌入链接的电子邮件回到站点。例如:

`http://domain.com/register?invitation_token=V80vy3muGvjORfu2eA8SCg`

Rails然后在路由文件中捕获URL的这个令牌部分作为此路由:

`get 'register/:invitation_token', :controller => 'users', :action => 'new', as: 'accept'`

这样做的目的是允许系统显示注册表单,并预先填写用户的电子邮件。通过这种方式,我们可以跟踪哪些测试用户发出的邀请最多,回复最多等等,作为一种竞赛。

网址会路由到用户#new 操作,其中包含 if语句,以确定表单的显示方式。

users/new.html.erb

<% if @user.invitation %>
  <script type="application/javascript">
    $(window).load(function() {
      $('#DialogPop').bPopup({loadUrl:'form', speed:'fast'});
    })(jQuery);
  </script>

<% else %>
  <%= render partial: 'form', locals: { isAjaxed: true } %>
<% end %>

如果用户的网址中嵌入了邀请令牌,则用户#new 会通过调用弹出窗口(通过bPopup对其进行处理,然后呈现用户形成部分(users/_form)。

问题:

弹出窗体正确显示,表明正在从users/new.html.erb文件中正确处理JS调用。但是,users/_form.html.erb表单的内容未显示。

我在这里缺少什么?

仅供参考 - UsersController 代码在这里......:

def new
@user = User.new(:invitation_token => params[:invitation_token])
@user.email = @user.invitation.email if @user.invitation
respond_to do |format|
  format.html {}
end

注意:来自令牌的信息正在传递。我可以确认,在显示表单时,它会显示预先填写的用户的电子邮件地址。

bPopup 的弹出功能在网站的其他区域完美运行,所以我知道它不是JS代码,除了它是URL调用到 'form'

编辑添加视图...

users/_form.html.erb

<div id="new-form-holder">
  <%= isAjaxed = false unless (defined? isAjaxed) %>
  <%= form_for @user, remote: isAjaxed do |f| %>
  <%= f.hidden_field :invitation_token %>
  <%= f.text_field(:name, class: 'txtbx flt-left', style: 'width: 130px', placeholder: 'Name...') %>
  <%= f.text_field(:surname, class: 'txtbx flt-left', style: 'width: 170px', placeholder: 'Last Name...') %>
  <% if @user.invitation %>
    <%= f.text_field(:email, class: 'txtbx flt-left', style: 'width: 325px', placeholder: 'Email...', :disabled => true) %>
  <% else %>
    <%= f.text_field(:email, class: 'txtbx flt-left', style: 'width: 325px', placeholder: 'Email...') %>
  <% end %>
  <%= f.password_field(:password, class: 'txtbx flt-left', style: 'width: 325px', placeholder: 'Password...') %>
  <%= f.password_field(:password_confirmation, class: 'txtbx flt-left', style: 'width: 325px', placeholder: 'Confirm password...') %>
  <%= content_tag(:div, image_submit_tag("img_blank.png", id: 'btnSubmit', class: 'btn-lrg flt-right', title: 'Submit'), class: 'btn-lrg flt-left submit-holder') %>
  <%= content_tag(:div, image_tag("img_blank.png", id: 'btnCancel', class: 'btn-lrg flt-right', title: 'Cancel'), class: 'btn-lrg flt-left submit-holder') %>
<% end %>

0 个答案:

没有答案