2013-10-10 43 views
1

我有3種型號如果使用的三種型號else條件軌

用戶:ID,名稱

喬布斯:ID,USER_ID,標題

應用:ID,JOB_ID,user_id說明

在作業#顯示頁面我正在嘗試設置一個按鈕,該按鈕僅對未應用於作業的人員可見,尚未創建作業並已登錄。我正在使用設計。我已經成功地在這些模型中建立了正確的關係(感謝SO),如下所示。

user.jobs #list發佈用戶的所有作業

jobs.applicants #list在工作中所有申請人

的問題是如何制定的if else condtion,顯示按鈕,提交表單(隱藏)添加到作業#show頁面,並將job_id和user_id放入應用程序模型中。

我試圖

<% if user_signed_in? %> 
<% if job.user_id = current_user.id %> 
    <div style="text-align:center;" class="widget"> 
    <%= link_to(new_user_session_path, :class => "g-btn type_primary") do %> 
     <i class="icon-external-link"></i> Apply for the job 
    <% end %> 
    </div> 
<% end %> 
<% end %> 

我不能似乎得到關於如何獲得object.id零的左右誤差的想法。

+0

如果job.user_id = current_user.id是賦值,而不是一個比較。 – Doon

回答

1

條件用戶如何申請工作?使用什麼控制器?

你的代碼在用戶再次登錄,

做用戶需要創建一個應用程序對象,它從用戶需要更多的信息來完成該過程,或者是沿着發送現有的信息線條更從用戶到存儲在作業中的信息。

如果後者你可以做這樣的事情。

resources :jobs do 
     member do 
     post 'apply' 
     end 
end 

<% if user_signed_in? %> 
<% unless job.user == current_user %> 
    <div style="text-align:center;" class="widget"> 
    <%= link_to 'Apply', apply_job_path(job), method: :post %> 
    </div> 
<% end %> 
<% else %> 
    <%= link_to 'Sign in to apply', new_user_session_path %> 
<% end %> 

然後在您的工作控制器

def apply 
    if Application.create job_id: params[:job_id], user: current_user 
    redirect_to jobs_path, notice: "You have applied, good luck!" 
    else 
    ... do something for failure... 
    end 
end 
1

試試這個

<% if user_signed_in? %> 
    <% if job.user_id == current_user.id %> 
    <div style="text-align:center;" class="widget"> 
     <%= link_to "Apply for the job" new_user_session_path, :class => "g-btn type_primary" %> 
    </div> 
    <% end %> 
<% end %> 

,它可能是更好地改變這一行

<div style="text-align:center;" class="widget"> 

<div class="widget center"> 

,並添加一個名爲center類相關CSS片

+1

if job.user_id = current_user.id < - 這是一項任務,而不是比較 – Doon

+0

你是對的,Doon – dax

2

您似乎錯過了=標誌。

您可以提高,如果這樣

<% if user_signed_in? && job.present? && job.user_id == current_user.id %> 
    your logic here 
<% end %>