当用户点击一些文本时,我想更改.erb文件中的Ruby本地参数的值。 (我使用Ruby和Sinatra,而不是Rails)。代码如下所示:
<div class="modal-body">
<!-- Get ERB to work here -->
<p><i>No account? <a href="#" onlick="<% new_user = !new_user %>">Register here</a></i></p> <!-- Should change new_user to true if clicked -->
<form class="input-group" style="margin: 0 auto" method="POST" action="/nanotwitter/v1.0/users/session">
<input class="form-control" type="text" name="username" placeholder="Username">
<br><br>
<input class="form-control" type="password" name="password" placeholder="Password">
<% if new_user %>
<br><br>
<input class="form-control" type="password" name="password2" placeholder="Repeat password">
<% end %>
<br><br>
<div class="input-group" style="margin: 0 auto">
<button type="button" class="btn btn-default form-control" style="width: 50%" data-dismiss="modal">Close</button>
<button class="btn btn-primary form-control" style="width: 50%" type="submit">
<% if new_user %>
Register
<% else %>
Log In
<% end %>
</button>
</div>
</form>
</div>
很明显,onlick属性中的Ruby代码会立即进行评估,我希望它只在用户点击时执行。我已经搜索了这个网站和互联网,我仍然不确定这个的正确/标准实现是什么。
答案 0 :(得分:1)
首先,ruby不与用户事件交互。 Javascript确实如此。
第二,什么是new_user
?简单变量?你想用它来交换表格以便注册\登录吗?或者您希望用户真正通过此方法注册?
如果案例是根据用户的选择(新的\已注册)向用户显示登录表单,则应该只使用javascript。
一般情况下,你应该为两种不同的形式(注册\登录)准备标记,并根据一些javascript变量隐藏它们,用户可以选择。