2013-07-30 49 views
0

我需要關於如何構建YESOD應用程序的一般指導。我想盡可能將應用程序保持爲「RESTful」。需要用戶從列表中選擇連接YESOD的兩個用戶

用戶搜索所有其他用戶以找到要連接的用戶。我顯示了使用哈姆雷特可能的連接:

$forall (pid, person, mEmail, mPhone) <- displayPeopleRecs 
    <p> 
     <a [email protected]{CreateFundR pid}>#{personNickName person} 
      $maybe email <- mEmail 
       #{emailEmail email} 
      $maybe phone <- mPhone 
       #{phoneNumber phone} 

不過,現在當他們去到/ createfund /頁的GET請求的鏈接用戶點擊這不是我想要的,我想用POST或別的東西。

任何人都可以解釋什麼是正確的解決方案在這裏?我是否爲每個人製作一份表格,搜索產生的內容,併爲每個可能的人提供一個提交按鈕?這似乎很愚蠢。使用Julius並更改鏈接的onclick處理程序以提交POST而不是GET到/ createfund會更好嗎?

這裏是我的配置/路由相關線路:

/createfund/#PersonId CreateFundR POST 

順便說一句,我可以看到如何使這項工作通過使用窗體和一個提交按鈕:

$forall (pid, person, mEmail, mPhone) <- displayPeopleRecs 
    <p> 
     <form method="post" action="@{CreateFundR pid}"> 
     <table> 
      <tr> 
      <td> 
       #{personNickName person} 
       $maybe email <- mEmail 
       <br> 
       #{emailEmail email} 
       $maybe phone <- mPhone 
       <br> 
       #{phoneNumber phone} 
      <td> 
       <input type="submit" value="Create Fund"> 

這將符合我的需求,但我真的想讓用戶只需點擊鏈接。這是不好的設計?或者只是一個品味問題?

回答

1

如果您使用AForm/MForm,表格將自動爲您生成(使用表格或Div)。這應該爲你簡化事情。

如果你想手動設置樣式,您可以使用表單時可以做這樣的事情:How to make button look like a link?。大多數人最終都會爲這些動作創建樣式化的按鈕(想想使用Edit,Delete按鈕等標準CRUD應用程序)。

如果你去捕捉鏈接點擊的路徑,做阿賈克斯後,它不會很好,如果JavaScript被禁用,所以你需要留意的東西降解。

HTH

+0

我不會擔心JavaScript禁用的人。 Javascript是HTML5的核心部分,只要遵循鏈接不會導致數據從數據庫中刪除(即不發送DELETE),那麼我不介意它們是否會遇到稍微差一點的經驗。我想我應該善待那些在阻止javascript的位置工作的人。嗯。感謝您的思考。 –

+0

閱讀您鏈接到的帖子後,我將使用表單和樣式按鈕,而不是將所有內容看起來像鏈接。我讓UI設計師同意一個新標準。再次感謝。 –

相關問題