【问题标题】:Access to my action edit from an other controller从其他控制器访问我的操作编辑
【发布时间】:2016-09-09 15:02:02
【问题描述】:

我是 RoR 的新手,我尝试构建一个带有帖子和用户的经典网络应用程序。 有一个模型和控制器(在线)允许用户将他的帖子放在一个公共墙上,其中包含此操作所拥有的新信息。 我目前正在尝试通过修改模型 Onlines 来修改与此操作(在线)关联的嵌套表单。 但是我无法访问我的控制器的这个动作,我不明白为什么?

我的代码::

在线控制器:

class OnlinesController < ApplicationController
  before_action :set_online

  def edit
  end

  private 

  def set_online
    @post = Post.find(params[:post_id])
    @online = Online.find_by(params[:id]) 
  end 

end 

后控制器:

class PostsController < ApplicationController
  before_action :set_online


  def show
    @online.post_id = @post.id
  end

  private

  def set_online
    @onlines = Online.find_by(id: params[:id]) 
  end 

end 

查看/帖子/节目:`

<div class="btn-group" role="group" aria-label="...">
  <%= link_to '-  taked  - ', edit_online_path(@online), data: { confirm: 'Confirmer la mise en ligne de #{@title}?' }, class: "btn btn-primary " %>
</div>

查看/在线/编辑:

<%= simple_form_for([@post, @onlines]) do |f| %>
  <div class="row">
            <div class="col-md-12">
              <div id="Order">
                <%= f.simple_fields_for :orders do |order| %>
                <%= render 'orders_fields', f: order %>
                <%end%>
                <div class="Order_links">
                  <%= link_to_add_association 'Ajouter une part', f, :orders, class: "btn btn-default" %>
                </div>
              </div>
            </div>
          </div>

<div class="form-group text-center">
<%= f.submit "Pusher", class: 'btn btn-success' %>
</div>

<% end %>

路线:

   Rails.application.routes.draw do
  get 'profiles/show'

  mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
  
  devise_for :users, :controllers => { registrations: 'registrations' }

  resources :posts do 
resources :comments
resources :onlines 
end

  get ':pseudo', to: 'profiles#show', as: :profile
  get ':pseudo/edit', to: 'profiles#edit', as: :edit_profile
  patch ':pseudo/edit', to: 'profiles#update', as: :update_profile
  get ':post_id/online/new', to: 'online#new', as: :new_online
  post ':post_id/online/:id/edit', to: 'onlines#edit', as: :edit_online


  root 'posts#index'

所以如果你能指导我成功完成这个动作,那就太好了,谢谢!

【问题讨论】:

    标签: javascript jquery html ruby-on-rails ruby


    【解决方案1】:

    首先,始终以单数形式(在您的情况下为在线)引用您的模型,因为这是 Rails 所期望的,而控制器是复数形式,正如您所说。小心你的“before_action :set_online”语句,因为它使用'find'方法来定义@post,如果没有传入参数会导致异常!此外,您的路线仅显示获取请求以将您带到您的 edit_online 页面。然后,您需要一个链接到您的“更新”操作的“发布”路线,该路线将在用户提交他/她的表单后将数据提交到您的应用程序!提供您的其余路线,我将进行更深入的研究,但也会稍微澄清您的问题。如果您只是想从一个控制器中的一个动作转到另一个控制器中的另一个动作,那么您希望使用“redirect_to”语句。

    【讨论】:

    • 感谢您的及时回答我编辑了我的问题以向您显示我的所有路线
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2017-10-24
    相关资源
    最近更新 更多