Итак, я пытаюсь обновить вложенный объект, но почему-то родительский контроллер apps_params
не удовлетворен, потому что app
не получает его. Взгляните ниже, и дайте мне знать, если я буду писать больше кода.Rails 4: передача идентификатора родителя для вложенных атрибутов при обновлении
консоли выглядит следующим образом:
Started PUT "/apps/1" for 127.0.0.1 at 2015-03-21 14:00:12 -0500
Processing by AppsController#update as JSON
Parameters: {"authenticity_token"=>"0Z/SxhhEO6OA6eiShd+1PZI0DQ9QK1I7G8wqoInz+vM=", "@app"=>{"element"=>{"@app"=>{"el
ent.name"=>"hgfd"}}}, "id"=>"1"}
App Load (1.0ms) SELECT "apps".* FROM "apps" WHERE "apps"."id" = ? LIMIT 1 [["id", 1]]
Completed 400 Bad Request in 2ms
ActionController::ParameterMissing (param is missing or the value is empty: app):
app/controllers/apps_controller.rb:73:in `app_params'
app/controllers/apps_controller.rb:45:in `block in update'
app/controllers/apps_controller.rb:44:in `update'
ссылочного линии в моем apps_controller.rb
:
def update
respond_to do |format|
if @app.update(app_params)
format.html { redirect_to @app, notice: 'App was successfully updated.' }
format.json { render :show, status: :ok, location: @app }
else
format.html { render :edit }
format.json { render json: @app.errors, status: :unprocessable_entity }
end
end
end
private
def app_params
params.require(:app).permit(:name, :infivewords, :description, elements_attributes: [:name, :description])
end
Мои Apps
Показать View
:
<% @app.elements.each do |element| %>
<tr>
<td>
<span class="rest-in-place" data-url="<%= url_for @app %>" data-object="@app[element]" data-attribute="@app[element.name]" data-placeholder="Enter description">
<%= element.name %>
</td>
<td><h2><%= element.description %></h2></td>
Я пробовал бесконечно возиться с View
, чтобы попытаться выяснить, почему черт app_id
не проходит, но я в недоумении и не могу найти информацию, которую я ищу для любого места.
Любая помощь приветствуется. Спасибо.
EDIT: Я должен добавить, что на моих маршрутах у меня есть два отдельных блока ресурсов. Один, где элементы находятся внутри приложений, а другой - внутри элементов. Я отправлю код, как только вернусь к своему столу.
EDIT2 - App Форма выпуска:
<%= form_for(@app) do |f| %>
<% if @app.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@app.errors.count, "error") %> prohibited this app from being saved:</h2>
<ul>
<% @app.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :infivewords %><br>
<%= f.text_field :infivewords %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Можете ли вы добавить свою форму? Params «@app» выглядит подозрительно, может быть, должно быть «приложение»? – messanjah
@messanjah будет делать, как только я вернусь к своему столу через несколько минут, мужик. Спасибо за быстрый ответ. На какой «@app» вы ссылаетесь? Внутри блока просмотра? Я в значительной степени пробовал все внутри этого блока и получал либо одну и ту же ошибку, либо не обновлял и не делал ошибок, но я попробую это снова и опубликую ответ консоли и браузера. – Nickdb93
Ключ «@app» в хэше параметров. 'app_params' требует«: app », но похоже, что отправляется« @app ». – messanjah