申し訳ありませんが、私は私が考案を使用していると私は更新しようとしているRailsは5 Simpleformは、ネストされた属性を更新していない
...これに類似の質問を見てきましたが、まだいくつかの理由のためにそれを把握することはできませんMy UserモデルとCityモデルをネストされたフォームを使用して同時に(登録登録ページを通じて)登録することができます。
データベースにある定義済みの値に基づいてユーザーの都市を更新しています。だから、すべてのユーザーは、リストから住んでいる都市を選択して保存するだけです。
現時点ではフォームは送信されますが、都市は変更されません。
ありがとうございます!
#user.rb
class User < ApplicationRecord
belongs_to :city
end
#city.rb
class City < ApplicationRecord
has_many :users
end
マイコントローラー:
class UsersController < ApplicationController
def index
@users = User.all
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to @user
else
render 'edit'
end
end
def show
@user = User.find(params[:id])
end
private
def user_params
params.require(:user).permit(city_attributes: [:id, :name, :user_id])
end
end
そして、私形式:
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
<%= f.simple_fields_for :city do |c| %>
<%= c.input :city_id, collection: City.all.order(name: :asc), label_method: :name, value_method: :id, label: "City", include_blank: false, selected: @user.city_id %>
<% end %>
<% end %>
私の推測では、フォームがあなたのusers_controllerにポストバックしないため、動作しないと思います。あなたは、 'routes.rb'ファイルを特定の方法で上書きして、あなたのコントローラを使用するようにDeviseに指示する必要があります。 – Iceman
ありがとう@Iceman。私は今すぐ私の答えを掲載し、私の問題は分類されています。ネストされた属性はまだ機能しませんが、それは別の時間に戻ってくるものです。 –
あなたはそれがうまくいってくれてうれしいです、多分私は別の問題をいつか調べます。 – Iceman