質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

解決済

Railsでajaxを使ったupdate処理を実装したい

NaojirouHisada
NaojirouHisada

総合スコア60

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

2回答

0評価

0クリップ

5271閲覧

投稿2016/03/28 13:13

Facebookのようなアプリを作成しており、
現在友達申請->友達申請待ち->お知らせに「友達承認/拒否」を表示
https://gyazo.com/d7f017add647dc208b9a9b8184b835d0
->承認or拒否を押す->お知らせページの申請部分だけを更新して表示を無くすようにしようとしています。
https://gyazo.com/cffea1831decd6ebe0a0c95e80ccd8a8

そのため、
友達管理を行うrelationshisテーブルに、
友達申請のステータスのためのstatusを作成し、
status = 'allow' =>友達というようにしています。

友達申請->友達申請待ち->お知らせに「友達承認/拒否」を表示
https://gyazo.com/d7f017add647dc208b9a9b8184b835d0
->承認or拒否を押す
までの部分は実装できたのですが、
お知らせページの申請部分だけを更新して表示を無くすところができません。

どのように実装すればよろしいのでしょうか??

ソースコードを載せますので、
お手数おかけしますがアドバイス宜しくお願いします。

relationshipsテーブル class CreateRelationships < ActiveRecord::Migration def change create_table :relationships do |t| t.references :follow, index: true t.references :followed, index: true t.string :status t.timestamps null: false t.index [:follow_id , :followed_id] , unique: true end end end
relationshipモデル class Relationship < ActiveRecord::Base belongs_to :follow , class_name: "User" belongs_to :followed , class_name: "User" end ユーザーモデル。 class User < ActiveRecord::Base has_one :member has_many :microposts has_many :comments has_many :following_relationships, class_name: "Relationship" , foreign_key: "follow_id" , dependent: :destroy has_many :following_users , through: :following_relationships , source: :followed has_many :follower_relationships, class_name: "Relationship" , foreign_key: "followed_id",dependent: :destroy has_many :follower_users, through: :follower_relationships , source: :follow has_secure_password accepts_nested_attributes_for :member # 他のユーザーをフォローする def follow(other_user ,status) following_relationships.create(followed_id: other_user.id , status: status.status) end # フォローしているユーザーをアンフォローする def unfollow(other_user) if following_relationships.exists?(:followed_id => other_user.id) following_relationships.find_by(:followed_id => other_user.id).destroy else follower_relationships.find_by(follow_id: other_user.id).destroy end end # あるユーザーをフォローしているかどうか def following?(other_user) following_users.include?(other_user) end # あるユーザーにフォローされているかどうか def follower?(other_user) follower_users.include?(other_user) end end
友達申請をされたことを知らせるinfomation.html.erb <div id="information" > <%= render 'follow_update' %> </div>
友達を承認させるための更新処理を行う_follow_update.html.erb <% followers = @followers.to_enum follower_relationships = @follower_relationships.to_enum %> <% loop do follower = followers.next follower_relationship = follower_relationships.next %> <% if follower_relationship.status == 'allow' %> <% else %> <hr > <p><%= follower.first_kana + "さんが友達申請をしてきました。" %><br /> <%= "友達申請を承認しますか?" %></p> <%= form_for(follower_relationship,:url =>{ :controller => "relationships" , :action => "update", :id => "#{follower_relationship.id}" }, remote: true) do |f| %> <%= p follower_relationship.follow_id %> <%= hidden_field_tag :follow_id , follower_relationship.follow_id %> <%=f.hidden_field :status %> <%= f.submit "承認"%> <hr > <% end %> <% end %> <% end %>
この更新を行うrelationshipコントローラのupdateメソッド def update @status = Relationship.find_by(params[:follow_id]) if @status.update(:status => 'allow') render json: @status else flash[:danger] = 'missing' end end
ajax操作を行うための記述のupdate.js.erb $("#information").html("<%= escape_javascript(render ('users/follow_update')) %> ");

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。