4

私は、お客様がメインのRails3アプリケーションと対話するためのAPIを作成することを検討しています。

一部には、json応答にフォームを含める必要がありました。基本的に、私たちが管理し、サイトに表示するフォームコード。

私はこれで問題なく動作しています(簡略化):

def login_form
  @response = Form.find_by_something(params[:something_else])
  if @response 
    render :status=>200, :json=>{:response => @response} 
  end
end

そしてクライアント側では、私はフェッチすることができます:

@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で分割できますか?

そうでない場合は、誰かがそれについて行くためのより良い方法をお勧めできますか?

4

2 に答える 2

1

これらの変数は、応答を準備するときにサーバー側で認識されていますか?その場合、私はテンプレートエンジンを介してそれらを実行してみ:json=> { :response => ERB.new(@response).result(binding) }ます-クライアントは彼の場合に適用可能なhtmlのみを受け取ります。

于 2012-10-10T21:43:36.593 に答える
1

Jqueryテンプレートまたは口ひげまたはハンドルバーのようにこれにJavascriptテンプレートを使用しないのはなぜですか

したがって、このようにクライアント側でフォームを保持します

ここでMustacheを使って説明します...。

...

    <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));
      }

    })
 })

このヘルプを願っています

真正性トークンが含まれていないため、form_tagではなくプレーンなFormhtmlタグをどのように使用するかわからない

この助けを願っています

于 2012-10-17T13:06:28.173 に答える