Utilisation d'itinéraires et d'associations imbriqués. J'ai un partiel qui crée un locataire, mais après la création il reste avec le formulaire rendu et l'URL change pour/locataires. Le comportement souhaité est qu'il doit rediriger vers la page d'affichage. Les itinéraires sont comme suit:Rails ne demandant pas à afficher la page après l'envoi de l'utilisateur
Rails.application.routes.draw do
devise_for :landlords
authenticated :landlord do
root "properties#index", as: "authenticated_root"
end
resources :tenants
resources :properties do
resources :units
end
root 'static#home'
end
Jusqu'à présent, les propriétés et les unités de travail (et le propriétaire) avec les locataires est question. À l'origine, j'avais des locataires imbriqués sous des unités, mais il y avait aussi des problèmes. regards partiels comme celui-ci:
<%= form_for @tenant do |f| %>
<%= f.label "Tenant Name:" %>
<%= f.text_field :name %>
<%= f.label "Move-in Date:" %>
<%= f.date_field :move_in_date %>
<%= f.label "Back Rent Amount:" %>
$<%= f.text_field :back_rent %>
<%= f.button :Submit %>
<% end %>
<%= link_to "Cancel", root_path %>
locataires contrôleur ressemble à ceci:
before_action :authenticate_landlord!
#before_action :set_unit, only: [:new, :create]
before_action :set_tenant, except: [:new, :create]
def new
@tenant = Tenant.new
end
def create
@tenant = Tenant.new(tenant_params)
if @tenant.save
redirect_to(@tenant)
else
render 'new'
end
end
def show
end
def edit
end
def update
if @tenant.update(tenant_params)
redirect_to unit_tenant_path(@tenant)
else
render 'edit'
end
end
def destroy
end
private
def set_property
@property = Property.find(params[:property_id])
end
def set_unit
@unit = Unit.find(params[:unit_id])
end
def set_tenant
@tenant = Tenant.find(params[:id])
end
def tenant_params
params.require(:tenant).permit(:name, :move_in_date, :is_late, :back_rent, :unit_id)
end
end
modèles ont des associations:
class Tenant < ApplicationRecord
belongs_to :unit, inverse_of: :tenants
end
class Unit < ApplicationRecord
belongs_to :property, inverse_of: :units
has_many :tenants, inverse_of: :unit
end
Enfin le spectacle # locataires routes râteau:
tenant GET /tenants/:id(.:format) tenants#show
J'ai largement recherché pour ce sujet, mais n'ont pas eu de succès. Toute aide est appréciée. Rails 5.1
J'ai fini par changer quelques choses. Je pense que mon problème principal était le routage. J'ai ajouté une route imbriquée peu profonde, et tout semble fonctionner correctement. Merci pour votre aide @moveson –