13

Rails アプリケーションで適切に実行するjquery プラグインjeditableを入手した人はいますか。もしそうなら、それを設定する方法についていくつかのヒントを共有できますか? 「submit-url」の作成に問題があります。


IIRC では、javascript 内から単純に ruby​​ コードを呼び出すことはできません (誤解させてください:-)。RJSのことですか???プロトタイプ限定じゃないの?私はjQueryを使用しています。


更新:
うーん...しばらく前にこれを尋ね、その間に別のソリューションに切り替えました。しかし、IIRCの主な問題は次のとおりです。

RESTful リソースを使用しています。では、ブログをモデル化し、リソース「投稿」を作成する必要があるとしましょう。投稿 (たとえば、ID 8 の投稿) を編集したい場合、更新は HTTP 経由で URL http://my.url.com/posts/8に HTTP 動詞 POST で送信されます。ただし、この URL は私の Rails コードで構築されています。では、submit-url を jQuery コードに取り込むにはどうすればよいでしょうか? これは RESTful コードであるため、私の更新 URL は投稿ごとに変わります。

4

5 に答える 5

9

JEdi​​table (1.6.2) と安静な Rails アプリ (2.2.2) を接続する方法は次のとおりです。

インラインフォーム:

<div id="email_name"><%= h( @email.name ) %></div>

$('#email_name').editable( <%= email_path(@email).to_json %>, {
  name: 'email[name]',
  method: 'PUT',
  submitdata: {
    authenticity_token: <%= form_authenticity_token.to_json %>,
    wants: 'name'
  }
});

コントローラ:

def update
  @email = Email.find( params[:id] )
  @email.update_attributes!( params[:email )
  respond_to do |format|
    format.js
  end
end

update.js.erb

<%=
    case params[:wants]
    when 'name' then h( @email.name )
    # add other attributes if you have more inline forms for this model
    else ''
    end
%>

その switch ステートメントでは少し不格好です。ajax リクエストが成功し、何も返されなかった場合、デフォルトで JEditable が送信された値を保存するだけでよいと思います。

于 2009-02-15T18:52:09.453 に答える
5

今だけこれを取り上げてすみませんが、コードをもう一度調べる時間を見つけました。次のjavascript(レール内の私のapplication.js)で問題を解決したと思います:

jQuery(document).ready(function($) {

$(".edit_textfield").each( function(i) {
  $(this).editable("update", {
         type      : 'textarea',
         rows      : 8,
         name : $(this).attr('name'),
         cancel    : 'Cancel',
         submit    : 'OK',
         indicator : "<img src='../images/spinner.gif' />",
         tooltip   : 'Double-click to edit...'
     })
 });
});

これは、コントローラーの URL が RESTful である場合に機能します。

于 2008-11-03T20:07:19.960 に答える
1

html に .js ファイルを含める場合は、いいえ、ビュー テンプレートに js をインラインで含める場合は、できます。

js ビューである .erb.js ファイルを使用することもできます。

何でも可能です:D

于 2008-11-03T20:21:51.630 に答える
0

あなたがコントローラーであるなら、安らぎより少し少ないです。特に、特定のフィールドを更新するアクションがある場合は、これも機能します。キーは認証トークンを渡すことです。

index.html.erb

<span id="my_edit"><%= foo.bar %></span>

<script type="text/javascript">
  $(document).ready(function() {
    $("#my_edit").editable('<%= url_for(:action => "update_bar", 
                  :id => foo) %>',
                    {
                       method: 'PUT',
                       cancel    : 'Cancel',
                       submit    : 'OK',
                       indicator : "<img src='../images/spinner.gif' />",
                       tooltip   : 'Double-click to edit...',
                       submitdata: {
                         authenticity_token: <%= form_authenticity_token.to_json %>,
                       }
                     }
    });
</script>

安らかなことを正当化しない過度に単純化されたコントローラー:

foo_controller.rb

def update_bar
    foo = Foo.find(params[:id])
    bar= params[:value]
            // insert justifiable code here
    foo.save
    render :text=>params[:value]
end

(Rails2.2.2および2.3.2w / Jeditable1.7.0およびjR​​ails0.4で動作しますが、jRailsはjQuery 1.5のインクルードを提供する以外、ここではあまり対話しません)

于 2009-05-19T04:28:14.843 に答える
0

あなたが抱えている問題を完全に理解しているかどうかはわかりませんが、JavaScriptに次のようなものを入れることができると思います:

<%= url_for(@post) %>

JavaScript をどのように構成しているか、ファイルをどのように整理しているかなどによって異なります。

于 2008-11-03T16:32:37.973 に答える