新しいコントローラーアクションを作成したくない場合(おそらく作成しない場合)は、作成アクションと更新アクションを次のように設定することをお勧めします。
def create
@document = current_user.documents.build(params[:document])
if @flag = @document.save
respond_to do |format|
format.html
format.js
end
else
render action: "new"
end
end
def update
@document = current_user.documents.find_by_url_id(params[:id])
if @flag = @document.update_attributes(params[:document])
respond_to do |format|
format.html
format.js
end
else
render action: "edit"
end
end
次に、app / views / document / create.js.erbで:
var results_html;
var status;
<% if @flag %>
results_html = $('<%= j(render("document"))%>');
status = "success";
<% else %>
results_html = $('');
status = "failure";
<% end %>
$('destination').append(results_html); //assuming you're inserting a list item or some content besides the alert onto the page
alert(status); // replace this with your actual alert code
およびupdate.js.erb:
var results_html;
var status;
<% if @flag %>
results_html = $('<%= j(render("document"))%>');
status = "success";
<% else %>
results_html = $('');
status = "failure";
<% end %>
$('#<%= @document.id %>').replaceWith(results_html); //assuming you're replacing a list item or some content besides the alert onto the page. also, make sure you're searching for the correct element id
alert(status); // replace this with your actual alert code
お役に立てれば。重要なのは、railsを使用すると、コントローラーアクションのさまざまなアクセス方法に対してさまざまなテンプレートを定義できることです。AJAXリクエストを行うと、デフォルトでjs.erbビューが表示されます。これにより、サーバーから返されたときに実行されるjavascriptを返すことで、現在のページを操作できます。