1

私は User モデルをセットアップし、restful_authenticationそれに属する Profile モデルを持っています。fields_forユーザーとそのユーザーのプロファイルを編集するためのフィールドをユーザー編集ビューに結合するために使用してきました。

in_place_editingユーザー表示ビューでプラ​​グインを使用するためにいくつかのフィールドを設定できるようにしたいと思います。与えられた例に従って、ユーザーテーブルフィールドで正常に動作します

users_controller.rb

in_place_edit_for :user, :email

/views/users/show.html.erb

<%= in_place_editor_field :user, :email %>

in_place_editor_fieldしかし、次の方法で編集ビューでアクセスするフィールドのビューにコントローラーまたはビットを適切に書き込む方法がわかりません。

<% fields_for @up do |profile_fields| %>
<%= profile_fields.text_field :status %>
<% end %>

users_controller で (わかりやすくするために):

def edit
  @user = User.find(params[:id])
  @up = @user.profile
end

:user.profile, :statususers_controller や /views/users/show.html.erbなどのシンボルを作成するにはどうすればよいですか?

助けてくれてありがとう。

4

1 に答える 1

1

in_place_editor ヘルパー タグを使用します。編集したいものを span/div でラップし、一意の ID を付けて in_place_editor タグで参照します。

# in the view 
<span id="user_email"><%= user.email -%></span>

<%= in_place_editor "user_email", :url => {:controller => :users, :action => 'set_user_email', :id => user} %>


# in the controller
User.content_columns.each do |column| 
  in_place_edit_for :user, column.name
end

魔法は :set_user_email です。これは、モデルとその属性のコントローラーで in_place_edit_for を使用するときに作成される、コントローラーで自動生成されるメソッドです。

モデルのすべてのフィールドを編集できるようにする方法を含めましたが、一部のモデル属性に限定したい場合があります。

コントローラーの設定方法によっては、set アクションを除外するために protect_from_forgery を設定する必要がある場合があります。ご承知のとおり - これにより、ポスト メソッドの csrf 検証がインプレース編集フィールドから削除されます。

編集
この質問は、認証トークンを含める方法を処理します。

于 2009-03-16T05:17:20.763 に答える