在onclick上更改ERB文件中Ruby变量的值

时间:2015-03-07 21:36:58

标签: ruby sinatra erb

当用户点击一些文本时,我想更改.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代码会立即进行评估,我希望它只在用户点击时执行。我已经搜索了这个网站和互联网,我仍然不确定这个的正确/标准实现是什么。

1 个答案:

答案 0 :(得分:1)

首先,ruby不与用户事件交互。 Javascript确实如此。 第二,什么是new_user?简单变量?你想用它来交换表格以便注册\登录吗?或者您希望用户真正通过此方法注册?

如果案例是根据用户的选择(新的\已注册)向用户显示登录表单,则应该只使用javascript。

一般情况下,你应该为两种不同的形式(注册\登录)准备标记,并根据一些javascript变量隐藏它们,用户可以选择。