Ruby on rails 使用Ruby on Rails在JSON提要中呈现动态变量

Ruby on rails 使用Ruby on Rails在JSON提要中呈现动态变量,ruby-on-rails,ruby,ruby-on-rails-3,json,api,Ruby On Rails,Ruby,Ruby On Rails 3,Json,Api,我只是想为我们的客户创建一个API,以便与我们的Rails3主应用程序交互 首先,我希望json响应包含一些表单。基本上是一些我们控制并出现在他们网站上的表单代码 我有这个工作正常(简化): 在客户端,我可以获取: @logins = HTTParty.get("#{set_auth_url}/api/v1/logins.json?auth_token=xyz&something_else=abc").parsed_response 并显示表单 = @logins["response"

我只是想为我们的客户创建一个API,以便与我们的Rails3主应用程序交互

首先,我希望json响应包含一些表单。基本上是一些我们控制并出现在他们网站上的表单代码

我有这个工作正常(简化):

在客户端,我可以获取:

@logins = HTTParty.get("#{set_auth_url}/api/v1/logins.json?auth_token=xyz&something_else=abc").parsed_response
并显示表单

= @logins["response"].html_safe
问题是,表单代码有一些动态变量:

例如:

<div class="login">
  <FORM name="form1" METHOD="get" action="<%= request.path %>?">
  <INPUT TYPE="HIDDEN" NAME="chal" VALUE="<%= params['challenge'] %>">
  <% if @current_location['success_url'] %>
    <INPUT TYPE="HIDDEN" NAME="userurl" VALUE="/success">
  <% end %>
  <input type="hidden" name="UserName" placeholder="Username" value="<%= @user['username']['username'] %>">
  <input type="submit" name="login" value="Login" class="btn">
</div>

我想知道这是不是个好主意?如果是这样,我如何在html中分解这些变量


如果不是,有人能推荐一种更好的方法吗。

在准备响应时,服务器端是否知道这些变量?在这种情况下,我将尝试通过模板引擎
:json=>{:response=>ERB.new(@response.result(binding)}
-客户端将只接收适用于其情况的html

为什么不在Jquery模板或小胡子或把手中使用Javascript模板呢

因此,将表单保存在客户端,如下所示

我会在这里用胡子来描述它

...

    <script id="template" type="text/template">
      <div class="login">
      <FORM name="form1" METHOD="get" action={{request_path}}>
      <INPUT TYPE="HIDDEN" NAME="chal" VALUE={{challenges}}>
      {{boolean_value}} 
      <INPUT TYPE="HIDDEN" NAME="userurl" VALUE="/success">
      {{/boolean_value}}
      <input type="hidden" name="UserName" placeholder="Username" value={{user_name}}>
      <input type="submit" name="login" value="Login" class="btn">
     </div>
    </script>

</html>
。。。
{{布尔值}}
{{/布尔值}
下一部分是以ajax的形式获得响应

使用任何Javascript框架都可以实现我在这里使用jQuery

<script type="text/javascript">
  $(document).ready(function() {
    $.ajax({
      // make ajax call over here
      success: function(data)  {
        // JSON DATA 
         var template = $('script#template').html();
         $([container where html is place]).html(Mustache.to_html(template,data));
      }

    })
 })

$(文档).ready(函数(){
$.ajax({
//打电话过来
成功:功能(数据){
//JSON数据
var template=$('script#template').html();
$([container where html is place]).html(Mustache.to_html(模板,数据));
}
})
})
希望这有帮助

不确定您希望如何使用纯格式html标记intead of Form_标记,因为它不包含真实性标记


希望这有帮助

那么您将html模板存储在数据库中,并返回给客户端在其网页中呈现?只是想确定一下,嘿。部分-仅表单代码。@simonmorley表单数据是否保持不变而不获取实际内容使用javascript模板有更好的解决方案表单应该是视图之类的书。是否有任何理由将表单html存储在数据库中?嘿。谢谢这是否意味着我在文本输入中保留了标准变量?Rails完成了其余的工作?不过,有些代码会从url中提取参数。这不是渲染的。如何获得这些参数?谢谢你的回复。这两种我以前都没用过。我不知道这是怎么要求的?我需要他们的get请求把整个表格都拉下来。我花了一些时间来处理这个问题,很抱歉我不能给你奖金。现在还不确定这是否完全正确,但它就快到了。再次感谢。
<script type="text/javascript">
  $(document).ready(function() {
    $.ajax({
      // make ajax call over here
      success: function(data)  {
        // JSON DATA 
         var template = $('script#template').html();
         $([container where html is place]).html(Mustache.to_html(template,data));
      }

    })
 })