gpt4 book ai didi

ruby-on-rails - rails : How do I send an object along with a form?

转载 作者:行者123 更新时间:2023-12-04 05:42:42 25 4
gpt4 key购买 nike

我有一个引用父对象的 Post 模型对象。 editnewreply 方法都使用相同的部分模板。

posts_controller 方法:

def edit
@post = Post.find(params[:id])
end

def reply
@post = Post.new
@replypost = Post.find(params[:id])
@post.title = @replypost.title
@post.parent = @replypost
end

部分模板代码:

<% form_for(@post) do |f| %>
<%= f.error_messages %>

<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<%= if :parent then f.hidden_field :parent end %>
<p>
<%= f.submit "Create" %>
</p>
<% end %>

如果我查看部分模板生成的源 HTML,我可以看到我正在将某种对象 ID 传递到我的创建方法。

<input id="post_parent" name="post[parent]" type="hidden" value="#&lt;Post:0x103e3bdf0&gt;" />

问题是,当我尝试保存我创建的这个新对象时,我收到一条警告,提示它需要一个 Post 并得到一个 String。我确信我可以通过设置和获取 parent_id 并将其与我的表单一起传递来解决这个问题,但我想知道是否有更好的方法来做到这一点,更优雅和 Rails 风格。

最佳答案

尝试 <%= f.hidden_field :parent_id unless @post.parent.nil? %>

这将通过帖子传递父 ID,然后您可以 .find(params[:post][:parent_id])如果您以后需要该对象。

关于ruby-on-rails - rails : How do I send an object along with a form?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com