加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby on Rails Form有两个参数

发布时间:2020-12-17 03:17:30 所属栏目:百科 来源:网络整理
导读:我有以下代码,但我无法理解如何为form_for([@ article,@ article.comments.build])进行路由. ???????? ??????????标题: ??????????%= @ article.title% ???????? p strongText:/strong %= @article.text % /p h2Add a comment:/h2 %= form_for([@article,
我有以下代码,但我无法理解如何为form_for([@ article,@ article.comments.build])进行路由.
????????
??????????标题:
??????????<%= @ article.title%>
????????

<p>
      <strong>Text:</strong>
      <%= @article.text %>
    </p>

    <h2>Add a comment:</h2>
    <%= form_for([@article,@article.comments.build]) do |f| %>
      <p>
        <%= f.label :commenter %><br>
        <%= f.text_field :commenter %>
      </p>
      <p>
        <%= f.label :body %><br>
        <%= f.text_area :body %>
      </p>
      <p>
        <%= f.submit %>
      </p>
    <% end %>

    <%= link_to 'Back',articles_path %>
    | <%= link_to 'Edit',edit_article_path(@article) %>

解决方法

Rails可以暗示来自form_for的路由

例如

<%= form_for(@article) do |f| %>
 ...
<% end %>

如果@article是新的而不在数据库中,那么rails可以推断出你正在创建一个新的,然后路由就是

articles_path(@article),action: :create

如果@article已存在于数据库中,那么rails可以推断出您正在编辑现有对象,因此路径是.

article_path(@article),action: :update

这适用于嵌套路由以及您拥有的示例代码.

<%= form_for([@article,@article.comments.build]) do |f| %>

它知道父路由是文章,子路由是注释,因为它是一个新的注释,路由将是

article_comments_path(@article,@article.comments.build),action: :create

如果存在评论,则它将是更新操作

article_comment_path(@article,@comment),action: :update

任何form_for,link_to等都可以暗示来自对象的路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读