2011-10-18 8 views
0

ユーザーが投票した後にこのボタンを表示させないようにするにはどうすればよいですか?投稿後にボタンが消える

 <p id="button_<%= review.id %>"><%= f.submit "vote" %></p> 
+0

はい、ページが再読み込みされると、ボタンは表示されません。私はそれを行うヘルパーメソッドを持っています。 – chief

+0

フォームが引き続き送信される(そしてAJAX呼び出しでは捕捉されない)場合は、すべてのブラウザで必ず確認してください。それ以外の場合は、一部のブラウザでは動作しない場合があります(フォームが送信されない場合があります)。 –

+0

ボタンを無効にするにはフォームのsubmitイベントを使用します。削除すると混乱する可能性があります。 – RobG

答えて

3

私は隠す代わりにボタンを無効にします。あまり混乱のないインターフェイスを作成します。

<p id="button_<%= review.id %>" onclick="this.disabled=true;"><%= f.submit "vote" %></p> 

をしかし、あなたはそれを隠したい場合は、あなたの代わりにthis.style.display='none';を使用することができます。

あなただけonclick属性を追加することによって、最も簡単にこれを行うことができます。すでにかかわらのjQueryを使っている(または、このようなものをたくさんやってしようとしている)場合

を(私はバニラのJSを思い出すことができる場合):

$('#button_<%= review.id %>').click(function() { 
    $(this).remove(); // or $(this).hide(); 
} 

編集:this shows the difference between Dr.Dredel's and my solution


onsubmit RobGを幸せにするバージョン

(あなたは <form>の上に配置する必要があります) 10

彼はそれがより意味をなさないことが正しいです。onsubmit; Enterを押してフォームを送信する方法は他にもあります。はい、それはhttp://jsfiddle.net/mnbayazit/9Snna/2/

+0

私はvisiblity = 'hidden'はブラウザの普遍的なものだと信じています...私はボタンを隠すためにディスプレイを使用したことはありません...しかしおそらくそれはちょうど有効です –

+0

@ Dr.Dredel:あなたはvisibility = hidden要素を視覚的に隠す可能性がありますが、それでもレイアウト内のスペースを占有します。一般的に、コンテンツは表示されず、実際には非常に一般的でよくサポートされています。間違いなく、jQueryが内部的に行っていることも間違いありません。 – mpen

+0

@Dr。Dredel:http://jsfiddle.net/mnbayazit/e8P4U/ – mpen

2

これを行う理由:おそらくあなたはまだ編集

(私は間違っていない場合も、入力を経由して二回提出することができなくなる)ようなシナリオでは無効になってもらうためにボタンにしたいと思います人々が元のページを再訪問できるようにし、投票ボタンをクリックした後に隠すのではなく、投票ボタンが再度表示されることを前提としています。あなたがそれを消して、ajaxを使うことを望んでいるなら、これまでの他の答えはこれを行う方法を説明しています。

あなたのコントローラでは、誰かがレビューしているレビューを投稿しているかどうかを確認します。

#this assumes that you have foreign keys user_id and article_id in your reviews table 
# and that @article and @user are the objects you're passing down 
@posted_review = Review.find_by_user_id_and_article_id(@article.id, @user.id) 

次に、ビューで:あなたは、このような<% = @posted_reviewを呼び出すように必要がある場合は、そのプロパティにアクセスできるように

<% if @posted_review.nil? %> 
<p id="button_<%= review.id %>"><%= f.submit "vote" %></p> 
<% end %> 

私は@posted_review実際の審査の対象に設定したまま.created_at%>

+0

+1は物事のルビーの側面を説明する...それはOPのように見えますが(Qの下のコメント) – mpen

+0

ありがとう。彼は私の投稿を読んだ後に忍者を編集したように見えます。私はあなたのコメントを読んで、上のことを見て、そこに老人になっていると思った。 – trogdor33

関連する問題