我的 Rails 專案有部分表格。此表單用于嵌套路由(帖子和評論),此表單僅讓我制作新資料。編輯頁面的 url 作業正常,但是當我進入那個編輯頁面時,表單標簽寫成 -> posts/1/comment(方法:post),這讓我無法更新資料。我的預期結果是 -> posts/1/comment/1 (method: put)
嵌套路由的形式->
<%= form_with model: [post, post.comments.build] do |f| %>
<div class="form-item-box">
<%= f.hidden_field :post_id %>
<%= f.label :content %>
<%= f.text_field :content %>
<% post.comments.build.errors.full_messages_for(:content).each do |error_message| %>
<div class="warning-box">
<%= error_message %>
</div>
<% end %>
<%= f.submit %>
</div>
<% end %>
編輯頁面->
<%= render partial: "form", locals: { post: @post } %>
在控制器上(更新方法測驗效果很好,所以我沒有寫它。唯一的問題是表單標簽一直構建為 post 方法。)
def edit
@post = Post.find(params[:post_id])
end
這個編輯表單鏈接在帖子的顯示頁面中,我在 postcontroller 中寫了@post
def show
@post = Post.find(params[:id])
end
路線
resources :posts do
resources :comments
end
我該如何解決?
部分形式構建為 -> posts/1/comment (method: post) 我期望的結果是 -> posts/1/comment/1 (method: put)
我嘗試為 glocal 變數更改變數,為非嵌套更改形式(它有效但我認為使用嵌套路由適合這種情況)
uj5u.com熱心網友回復:
我認為你的錯誤在這里:
<%= form_with model: [post, post.comments.build] do |f| %>
在post.comments.build你總是發起一個新的評論,因此創建一個表單來創建一個新的評論(POST),這不會更新任何東西,因為它還不存在。不能 100% 確定您的應用程式的邏輯,但如果您想要一個表單來編輯每個帖子評論 (PUT),您需要執行以下操作:
<% post.comments.each do |comment| %>
<%= form_with model: [post, comment] do |f| %>
<% #.....
最壞的情況,您還可以手動設定表單的屬性,例如:
<%= form_with(model: comment, url: edit_post_comment_path(post, comment), method: "put") %>
uj5u.com熱心網友回復:
嵌套路由的形式 ->
<%= form_with model: [post, comment] do |f| %>
<div class="form-item-box">
<%= f.hidden_field :post_id %>
<%= f.label :content %>
<%= f.text_field :content %>
<% comment.errors.full_messages_for(:content).each do |error_message| %>
<div class="warning-box">
<%= error_message %>
</div>
<% end %>
<%= f.submit %>
</div>
<% end %>
編輯頁面 ->
<%= render partial: "form", locals: { post: @post, comment: @comment } %>
comments_controller ->
def edit
@post = Post.find(params[:post_id])
@comment = Comment.find(params[:id])
end
posts_controller ->
def show
@post = Post.find(params[:id])
@comment = Comment.new(post: @post)
end
現在作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534558.html
標籤:ruby-on-rails红宝石ruby-on-rails-3
上一篇:更新后的Rails模型獲取更改
