我有两个div容器。一个div有一个表单,另一个有很多我想隐藏的敏感内容。它们都是用bootstrap构建的。
这个想法是第一个表单需要一个人输入密码,然后这应该触发对后端的ajax post调用以检查密码是否正确,如果是,则第二个容器将被显示。
在我的routes.rb
中post 'users/trial_signup_validation', to: 'users#trial_signup_validation'
在我的users_controller.rb
中 def trial_signup_validation
@password = params['password']
if @password == 'sales'
render :json => { "success" : "true" }
else
render :json => { "success" : "false" }
end
该方法从ajax post获取对象并检查它,然后将json true或false返回给视图。
这是视图
<script type="text/javascript">
$("#protectivepanel").submit(function(event) {
$.ajax({
type: "POST",
url: "/users/trial_signup_validation",
data: $("#protectivepanel").serialize(),
success: function(data){
return data.success
}
});
event.preventDefault()
});
$(document).ready(function(){
$("#the_submit_button").click(function(e){
e.preventDefault();
if (data.success){
$("#protectivepanel").hide()
$("#salespanel > div").removeClass("hide")
}
else {
$("#protectivepanel").show()
}
});
});
</script>
我的第一个表单看起来像这样
<div class="container" id="protectivepanel">
<form role="form">
<div class="form-group">
<label for="representativepassword">Representative's Password</label>
<input type="text" class="form-control" id="representativepassword" placeholder=" Enter Password">
<button type="submit" class="btn btn-default" id="the_submit_button">Submit</button>
</div>
</form>
</div>
当我运行rails s
时,我收到一个语法错误,指向同一个控制器中的另一个方法,这对我来说毫无意义。
SyntaxError at /users/trial_signup
syntax error, unexpected ':', expecting =>
这个方法在我开始处理jquery表单之前完美运行。
答案 0 :(得分:1)
更新trial_signup_validation
,如下所示:
def trial_signup_validation
@password = params['password']
if @password == 'sales'
render :json => { "success" => "true" } ## Use hash rocket instead of :
else
render :json => { "success" => "false" } ## Use hash rocket instead of :
end
注意:
"success" and "true"
都是Strings
,因此您必须使用hash rocket(=>)
来表示哈希语法,因为没有符号,所以不能使用:
。