管理者が ajax と jQuery を使用して CRUD 操作を実行できるようにするバックエンドを Rails 3.2 で開発しました。js.coffee ファイルを使用して ajax を処理するいくつかのコントローラー/ビューでこれを行いました。私のビューのファイル構造の例は次のとおりです。
views
users
index.html.erb
_form.html.erb
_edit_form.html.erb
_user.html.erb
create.js.coffee
edit.js.coffee
update.js.coffee
destroy.js.coffee
customers
index.html.erb
_form.html.erb
_edit_form.html.erb
_customer.html.erb
create.js.coffee
edit.js.coffee
update.js.coffee
destroy.js.coffee
email_blasts
index.html.erb
_form.html.erb
_edit_form.html.erb
_blast.html.erb
create.js.coffee
edit.js.coffee
update.js.coffee
destroy.js.coffee
.
.
.
.
User ビューと Customer ビューの両方の create.js.coffee の例を以下に示します。正確なパターンに従っているインスタンス変数と div 名に注意してください。以下のすべての coffeescript は、上にリストしたすべてのビューの正確な構造に従います。上記のすべての create.js.coffee ファイルは実質的に同一です。私の質問は、重複を減らすための最良の方法は何ですか? これは、プラグインを作成する必要があるものでしょうか? ヘルパーに入れようかな…などなど。私は元PHPプログラマーであるため、レールでこれを処理する方法がわかりません:(誰の助けもいただければ幸いです!
User ビューの create.js.coffee:
$('#errors').empty()
$('#errors').show()
<% if @user.errors.any? %>
$('<%= escape_javascript(render :partial => "errors", :locals => {:target => @user })%>')
.appendTo('#errors')
<% else %>
$('<%= escape_javascript(render(:partial => @user))%>')
.appendTo('#user_table')
.hide()
.fadeIn(200)
$('#errors').hide()
$('#new_user')[0].reset()
$('#users_count').html '<%= users_count %>'
<% end %>
$('#error_close').click ->
$('#errors').fadeOut()
Customer ビューの create.js.coffee
$('#errors').empty()
$('#errors').show()
<% if @customer.errors.any? %>
$('<%= escape_javascript(render :partial => "errors", :locals => {:target => @customer })%>')
.appendTo('#errors')
<% else %>
$('<%= escape_javascript(render(:partial => @customer))%>')
.appendTo('#customer_table')
.hide()
.fadeIn(200)
$('#errors').hide()
$('#new_customer')[0].reset()
$('#customers_count').html '<%= customers_count %>'
<% end %>
$('#error_close').click ->
$('#errors').fadeOut()