2017-05-03 8 views
-1

私はRuby on Railsアプリケーションのようなブログを作っています。ブログ投稿は私の投稿モデルから生成され、私はそれらに2つの異なる振る舞いを持たせたいと思います。(Ruby on Rails/CSS)ブログを "ポスト"モデルにするには2つの異なる方法がありますか?

投稿が自動的に毎日自動的に生成されるように設定しました。基本的には、最初に生成されたときにこれらの投稿が特定の方法で動作するようにしたい(別のCSS Appearenceなど&ユーザーがクリックされたときにその投稿を編集するようにリダイレクトされます)、そしてこの投稿を編集したときにCSS appearenceが異なり、をクリックすると、ユーザーは編集されずに投稿を表示するようにリダイレクトされます。

これを達成するための提案やアドバイスはありますか?

答えて

0

最初の最も重要な詳細は、それぞれPostのステータスを保存することです。したがって、edited(ブール値)またはstatus(ストリング)フィールドをモデルに追加してください。新しい/自動Postを生成する場合は、statusを「新規」に設定します。誰かがそれを編集すると、それを「編集済み」に変更します。

Poststatusに基づいてビューを変更することです。それを行うための最も簡単な方法は、このようなものです:もちろん

<% if post.status == 'New' %> 
    <div class="new-post"> 
    <%= link_to "Edit Post", edit_post_path(post) %> 
    </div> 
<% else %> 
    <div class="edited-post"> 
    <%= link_to "View Post", post_path(post) %> 
    </div> 
<% end %> 

、HTMLにあなたが望む方法を作成し、それぞれnew-postedited-postクラスにCSSルールを追加します。

+0

おかげのようなものになるはずです、これは完璧な答え:) – Andrew

+0

ただ、フォローの質問は次のとおりです。私は現在、すべての投稿をコード<%= render feed%>で表示していますが、これをあなたが記述したコードと統合する方法がわかりません。 – Andrew

+0

明確にする:<%= render feed%>はすべての投稿を繰り返すループの一部であり、その行はそれぞれの投稿を表示するために使用されます – Andrew

0

statusの列を使用してPostの現在の状態を維持するRyan Kのアプローチに同意しますが、状態文字列がビューを汚染しないようにするために少し進んでいます。

ようPostにメソッドを追加します。また、状態値がないことを確認します

<% if post.new? %> 
    <!-- Do stuff with unedited posts --> 
<% else %> 
    <!-- Do stuff with edited posts --> 
<% end %> 

:これは、あなたがその状態についての記事を依頼することができます

def new? 
    status == 'New' 
end 

最終的には複数の場所で繰り返される。

それは、この特定のケースのためにやり過ぎのように思えるが、あなたは、より複雑な状態のパターンを扱う自分自身を見つける場合は、あなたがhttps://github.com/geekq/workflow

関連する問題