2016-07-25 13 views
0

背景レール出力は、私は私のレールのアプリでストーリーのためのモデルを持っている

正しくないです。モデルの部分の1つは、 "published"のブール値です。

作成フォームと編集フォームでは、ストーリーが公開されている場合は「オン」、公開されていない場合は「オフ」と表示されるトグルボタンがあります。このトグルは現在正しく動作しており、ストーリーを公開するかどうかを切り替えることができます。このトグルはそれに従ってデータベースを更新する。ショーページ

問題

私は、if文をやろうとしたが、それは正しく解決されていなかったので、私はちょうど出版され、変数のプリントアウトを行なったし、それは常にfalse」出力しますデータベースをチェックしても "true"に設定されます。

コード

<% @title="Stories" %> 

<p><strong><%= @story.heading %></strong></p> 

<p><%= @story.body %></p> 

<p> 
    <%= #!!!!!!!!!!!!!!!!Not working currently!!!!!!!!!!!!! 
     # if @story.published 
     # @publish_Notice = "This story has been made public." 
     # else 
     # @publish_Notice = "This story is private." 
     # end 
     # @publish_Notice 

     @story.published # Always prints out 'false' even when database shows 'true' 
    %> 
</p> 

<p>~ <%= @story.authorName %></p> 

<p>Submitted: <%= @story.created_at.strftime("%B, %d %Y") %><br/> 

<%= 
    @location = " " 

    if @story.locationCity == "" || @story.locationCity == " " || @story.locationCity.nil? 
    @location = " " 
    else 
    @location = "Near: " @story.locationCity + ", " + @story.locationState 
    end 
%> 
<%= @location %></p> 

<% if (user_signed_in?) && (current_user == @story.user) %> 
    <%= link_to 'Edit', edit_story_path(@story) %> | 
    <%= link_to 'Delete', @story, method: :delete, data: { confirm: 'Are you sure?' } %> | 
<% end %> 
<%= link_to 'Back', stories_path %> 
+0

どのラインであなたは問題に直面していますか? – uzaif

+0

@uzaif、私は出版された情報を印刷していたところで問題を抱えていました。私のコードに問題がどこにあるのかを示すコメントがあります。 –

答えて

1

回答 自分自身を把握し、この問題を解決しようとすると、何を考え出すていないと最終的にここに質問を投稿する2日後、私が見つけました数分後に私のストーリーコントローラに座っているコードスニペットに問題があります。下のコードで問題が見つかるかどうかを確認してください。

古いコードそれがwasnしても、ブラウザで話番号に入力することができることと、それを見てから人々を停止する

def show 
    if @story.published = false && @story.user != current_user 
    redirect_to stories_url, notice: 'That action is not permitted.' 
    end 
end 

説明

Iセットアップこのコードスニペット出版されました。問題コードは2行目にあり、ここでストーリーが公開されているかどうかを確認しました。私は1つの等号だけを置くので、ストーリーが表示されるたびに、公開された変数はデータベースを変更せずに「false」に変更されます。私は余分な等号を付け加えました。ここに新しいコードがあります。新しいコード

def show 
    if @story.published == false && @story.user != current_user 
    redirect_to stories_url, notice: 'That action is not permitted.' 
    end 
end 

は私の問題で私を助けるために情報をフォローアップを求めて上のように速かった人たちに感謝します。私はあなたの援助に感謝します。

+1

単一の '='が不足すると、多くの問題が発生する可能性があります。 – Pramod

+0

偉大な仕事の男! – uzaif

+1

'もし@ story.published && ...'があなたをより良く奉仕するかもしれません。あるいは、もし '' @ story.visible_to(current_user) 'で' 'それは公開されました 'と' 'この人は著者である' 'というロジックを' visible_to'メソッドの中に隠しています。 –

関連する問題