【问题标题】:Need user to pick from a list to connect two users in YESOD需要用户从列表中选择以连接 YESOD 中的两个用户
【发布时间】:2013-07-31 12:46:39
【问题描述】:

我需要有关如何构建 YESOD 应用的一般指导。我希望应用程序在设计上尽可能保持“RESTful”。

用户搜索所有其他用户以找到要连接的用户。我使用 Hamlet 展示了可能的联系:

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

但是,现在当用户单击链接时,他们会以 GET 请求的形式进入 /createfund/ 页面,这不是我想要的,我想使用 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">

这将满足我的需求,但我真的很想让用户只需单击链接。这是糟糕的设计吗?还是只是口味问题?

【问题讨论】:

    标签: yesod


    【解决方案1】:

    如果您使用 AForm / MForm,表格将自动为您生成(使用 Tables 或 Divs)。那应该为您简化事情。

    如果您想手动设置样式,可以在使用表单时执行以下操作:How to make button look like a link?。无论如何,大多数人最终都会为此类操作创建样式按钮(想想您的标准 CRUD 应用程序与编辑、删除按钮等)。

    如果您沿着捕获链接点击的路径并执行 ajax Post,如果禁用 javascript,它不会很好地降级,因此您需要注意一些事情。

    HTH

    【讨论】:

    • 我不担心禁用 javascript 的人。 Javascript 是 HTML5 的核心部分,只要点击链接不会导致数据从数据库中删除(即不发送 DELETE),那么我不介意他们的体验是否稍差。我想我应该善待那些在阻止 javascript 的地方工作的人。唔。感谢您的思考。
    • 阅读了您链接到的帖子后,我将使用表单并设置按钮样式,而不是让所有内容看起来都像链接。我让 UI 设计师同意一个新标准。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多