Webページを書いてて、編集画面のフォーム内で"更新"ボタンと"削除"ボタン(またはキャンセルボタンとか)を並列配置したいことがあります。
ネットで調べるとjsを使った実装方法が載ってるんですが、railsコードだけで実装する方法がないかと調べたら見つかりました!!忘れそうなので、備忘録がてらメモメモ。
実装方法としてはHTMLのinputタグで付けることができる属性であるname属性を使用します。
たとえば以下のHTMLコードだとname属性に"update"を指定しています。
<input class="button_edit_menu" id="blog_name_submit" name="update" type="submit" value="Update Tag")
このname属性をERBコードの中でも指定できます。
<%= f.submit 'Update Tag', :name => 'update' %>
このname属性が指定されているかどうかをコントローラーのアクション内で判断してname属性有無で処理を分岐させます。コントローラーのアクション内でname属性有無を判断するのは、params[:属性名]の真偽で判断できます。
if params[:update]
# name属性"update"が指定されている場合の処理
anything…
end
<%= form_for @tag,
:url => { :action => 'tag_update', :tag_id => @tag.id },
:html => { :method => :put } do |tag| %>
<%= tag.text_area :blog_name, :value => @tag.name, :cols => 20, :rows => 1 %>
<%= tag.submit 'Update Tag', :name => 'update' %>
<%= tag.submit 'Delete Tag', :confirm => "#{@tag.name} を削除しますか?", :name => 'delete' %>
<% end %>
if params[:update]
update_tag = Tag.find( params[:tag_id] )
update_tag.update_attributes( :name => params[:tag][:name] )
elsif params[:delete]
destroy_tag = Tag.find( params[:tag_id] )
destroy_tag.destroy
end
Perl |
3
|
Linux |
16
|
Jenkins |
1
|
CI |
1
|
Bashシェル |
1
|
シェルスクリプト |
1
|
Munin |
7
|
Ruby on Rails |
7
|
plenv |
1
|
sudo |
2
|
Cobbler |
6
|
ruby |
1
|
rbenv |
1
|
WeeChat |
1
|
tmux |
2
|
Webistrano |
1
|
capistrano |
1
|
puppet |
8
|
growthforecast |
1
|
Supervisor |
1
|
perlbrew |
1
|
git |
2
|
Python |
1
|
pip |
1
|
PHP |
1
|
Nginx |
1
|
MySQL |
2
|
LXC |
2
|
RPM |
3
|
ImageMagick |
1
|
Subversion |
1
|
qmail |
3
|
yum |
1
|
ucspi-tcp |
1
|
daemontools |
1
|
Puppet |
1
|
IPVS |
1
|
Kickstart |
1
|
aaa |
0
|