function submitWithValueAndConfirm(formid, commitValue, text)
{
if (window.confirm(text)) {
var objForm = document.getElementById(formid);
objForm.commit_value.value = commitValue;
objForm.submit();
} else {
return false;
}
}
view
<% form_for :req, @req, :url => {:action => :update}, :html => {:method => :put, :id => "action"} do |f| %>
<input type="hidden" name="commit_value" />
<%= f.submit "CONFIRM", :onClick => ("return submitWithValueAndConfirm('action','confirm', 'Will do. Okay?');") %>
<%= f.submit "KILL", :onClick => ("return submitWithValueAndConfirm('action','kill', 'Will delete. Okay?');") %>
<%= f.submit I18n.t('btn_something'), :onClick => ("return submitWithValueAndConfirm('action','confirm', '" + I18n.t('something') + "');") %>
<% end %>
上で return confirm はポップアップメッセージ用。:onclick を使用すると、:confirm が使えないため。controller
case params[:commit_value]
when "confirm"
...
when "kill"
...
when "something"
...
end
因みに、リンクでフォームをサブミットする方法
<% form_for ([:user, @user], :url => {:action => :create}, :html => {:name => :login}) do |f| %>
...
<a href='#' onclick="document.login.submit();" >Login</a>
<% end %>

0 件のコメント:
コメントを投稿