单击时更改 ERB 文件中 Ruby 变量的值

Change value of Ruby variable in ERB file upon onclick

我想在用户单击一段文本时更改我的 .erb 文件中 Ruby 局部参数的值。 (我在 Sinatra 中使用 Ruby,而不是 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 代码会立即求值,我希望它仅在用户单击时执行。我搜索了这个网站和互联网,但我仍然不确定 correct/standard 的实现方式是什么。

首先,ruby不要与用户事件交互。 Javascript 确实如此。 其次,什么是 new_user ?简单变量?您想用它来交换注册\登录的表格吗?或者你想让用户真正通过这种方式注册?

如果情况是根据用户的选择 (new\registered) 向用户显示登录\注册表单,您应该只使用 javascript。

一般来说,你应该为两种不同的形式(register\login)准备标记,并根据一些javascript变量隐藏它们,用户可以选择。