Не ставьте его в частичное, просто иметь registration
взгляд на свой собственный, названный с render
...
#app/views/layouts/application.html.erb
<%= render "accounts/new" %>
#app/views/accounts/new.html.erb
<%= simple_form_for :user, url: account_register_path do |f| %>
...
Хотя you can use a symbol to populate form_for
, она не будет включать в себя атрибуты модели, или различные скрытые методы, которые дают контекст (например, id
и т. д.).
Если вы хотите, чтобы заполнить accounts#new
вид/действие с переменной, вы должны установить его в вашем ApplicationController
:
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :set_user
private
def set_user
@user = User.new
end
end
Это позволит вам использовать:
#app/views/accounts/new.html.erb
<%= simple_form_for @user, url: account_register_path do |f| %>
-
Лучший способ реализовать это будет с помощью Ajax - таким образом, объект @user
создается только тогда, когда он вам нужен (разрешает раздувание).
Мы done this before:

Вы бы просто необходимо следующее:
#app/views/layouts/application.html.erb
<%= link_to "New User", account_register_path, remote: true %>
#app/controllers/accounts_controller.rb
class AccountsController < ApplicationController
respond_to :js, :html
def new
@user = User.new
respond_with @user
end
end
#app/views/accounts/new.js.erb
$("<%=j render 'accounts/new' %>").appendTo("body");
Почему я не должен класть его в частичное?Я не использую динамические JS-файлы в моем проекте. Я уже использую шаблон, который я купил у ThemeForest, и имеет кучу JS-файлов, поэтому, если я начну добавлять динамические JS-файлы, это станет полным беспорядком IMHO. –
Это не частичное, просто вы можете получить такую же функциональность, ссылаясь на файл, который у вас уже есть –
Извините, но я не понял «ссылку на файл, который у вас уже есть» –