我已经太过努力了,所以我决定问。
执行创建操作后,我会从rails console
获得创建用户的响应,但渲染不起作用。如果我刷新页面,则用户已登录并创建,但在执行操作时,没有任何反应。这是天气我通过#New动作的html或js响应来做到这一点。
同时当我点击submit
时,我可以看到Chrome developer tools
=>中呈现的回复network
=> preview
,但不在浏览器内。它只是有点卡住了。
请帮忙。有什么想法可能会发生这种情况吗?
这是我的控制器。
#User Sign-up
def new
@user = User.new
@title = "Inschrijven"
@description = "Inschrijven als talent bij.."
respond_to do |format|
format.js
format.html
end
end
# Creates the basic user object from which can be created either a Jobseeker object or a Company object.
def create
user = User.new(user_params)
@title = "Inschrijven"
@description = "Create a new user for 'region'."
respond_to do |format|
if user.save
sign_in user
format.html { redirect_to contact_path }
else
format.html { render 'new' }
end
end
end
以下是注册表单:
<div class="container-fluid">
<h2 class="alt1 center"><%= description %></h2>
<div class="row">
<%= form_for(user, :url => { path: signup_path, via: 'post', action: 'create' }, :html => { remote: true, :class => "form-horizontal" }) do |f| %>
<%= render "shared/error_messages" %>
<div class="form-group">
<%= f.label :email, :class => "col-sm-4 control-label" %>
<div class="col-sm-4">
<%= f.text_field :email, :class => "form-control" %>
</div>
<span id="userEmailCheck"></span>
</div>
<div class="form-group">
<%= f.label :password, "Wachtwoord", :class => "col-sm-4 control-label" %>
<div class="col-sm-4">
<%= f.password_field :input_password, :class => "form-control" %>
</div>
<span><%= link_to((image_tag "tooltipicon.png"), "", :data => { toggle: "tooltip", placement: "right" }, :title => "Uw wachtwoord kan bestaan uit minimaal 6 en maximaal 20 tekens.") %></span>
</div>
<div class="form-group">
<%= f.label :password_confirmation, "Herhaal wachtwoord", :class => "col-sm-4 control-label" %>
<div class="col-sm-4">
<%= f.password_field :password_confirmation, :class => "form-control" %>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-5 col-sm-4">
<%= f.submit "Ga verder", class: "btn" %>
</div>
</div>
</div>
<% end %>
答案 0 :(得分:0)
您在表单定义中使用remote: true
。这意味着请愿书将使用Rails内置unobtrusive javascript features作为javascript处理。您可以在服务器日志中检查请愿书是否有内容类型 JS 而不是 HTML 。
你的控制器应该相应地处理这种情况。现在,您明确声明HTML请求的行为,而不是为JS定义任何行为。这肯定会在服务器上出现异常(您可以在Chrome开发工具的 network 标签中看到)。
将您的控制器操作更改为:
def create
user = User.new(user_params)
@title = "Inschrijven"
@description = "Create a new user for 'region'."
respond_to do |format|
if user.save
sign_in user
format.html { redirect_to contact_path }
format.js {}
else
format.html { render 'new' }
format.js {}
end
end
end
然后在create.js.erb
上创建一个app/views/users/
文件(假设您的控制器名称为UsersController
。该文件应该在 Javascript 中处理,添加模型后的当前视图。
当然,如果您只需要重定向到remote: true
的HTML请求,则可以选择从表单中删除contact_path
选项。