2014-07-03 65 views
0

我有一個包含兩個提交按鈕的表單,一個發佈帖子,另一個發佈帖子,如果已經發布的話。如果聲明在rails中顯示不同的提交按鈕

我想只顯示發佈按鈕,如果帖子發佈。

如果發佈帖子@article.publish1;如果不是,則爲0

我有以下代碼嘗試並執行此操作,但if語句似乎不起作用 - 取消發佈按鈕會顯示,而不管@article.publish是什麼,並且發佈按鈕保持隱藏狀態。

<% if @article.publish = '1' %> 
    <div class="four columns"> 
    <%= f.submit :value => "UNPUBLISH"%> 
    </div> 
<% else %> 
    <div class="four columns"> 
    <%= f.submit :value => "PUBLISH"%> 
    </div> 
<% end %> 

這個語法有什麼問題嗎?提前致謝。

回答

2

您可以通過不重複重複的內容來清理整個事情。

<div class="four columns"> 
    <%= f.submit :value => "#{"UN" if @article.publish }PUBLISH" %> 
</div> 
+0

Cheers Max,更簡潔,更簡潔。 – Terryfrancis

4

應該有:

if @article.publish == '1' 

==是比較單一=是用於分配。

+0

是的,但現在它卡在發佈按鈕上,並且不管公共值是什麼,取消發佈按鈕都是隱藏的。 – Terryfrancis

+1

@Terryfrancis是'publish'字段布爾值?如果是這樣,它會被自動強制轉換爲「true」或「false」,所以你只需要'if @ article.publish'。 –

+0

是的,它默認設置爲0.我嘗試使用'if @ article.publish',它又卡在取消發佈按鈕上:( – Terryfrancis

-1

我解決了這個問題,通過改變

<% if @article.publish == '1' %> 

<% if @article.publish == 1 %> 

我拿着報價單上的1 simples標誌着關閉。

+0

你應該說'if @ article.publish'。'1'恰好是你的數據庫管理系統(MySql,我猜測)如何存儲布爾值,在你的rails代碼中,你應該測試布爾值而不是dbms特定值。 –