为什么mi对象在没有底物的情况下创造?

时间:2016-06-07 17:49:30

标签: javascript sql ruby-on-rails ruby

我在网络应用中遇到了一个问题。 我想创建一个mvc,允许用户从帖子创建推送(如排名或通知)。但实际上,当用户显示帖子时,推送会自动创建。所以如果用户提交推送的数据,我希望创建一个。 你能解释一下我犯错的地方吗?

我的代码

显示/发布视图:

  <strong>Title:</strong>
  <%= @post.title %>
</p>

<p>
  <strong>Image:</strong>
 <%= image_tag @post.image.url(:medium) %>
</p>

<p>
  <strong>Prix:</strong>
  <%= @post.prix %>
</p>

<p>
  <strong>Description:</strong>
  <%= @post.description %>
</p>



<%- if current_user.admin? %>
      <div class="btn-group" role="group" aria-label="...">

      <%= link_to 'Modifier', edit_post_path(@post), class: "btn btn-warning"%>

      <%= link_to 'Supprimer', @post, method: :delete, data: { confirm: 'Confirmer la suppression du plat ?' }, class: "btn btn-danger" %>
      <%end%>

<%=link_to "Home", posts_path, class: "btn btn-info"%>
  </div>
  <div class= "col-md-6">
    <div class="push">
      <%= render 'pushs/form' %>
    </div>
  </div>

推送/表单(进入views / posts / show):

<%= simple_form_for([@post, @post.pushs.build]) do |f| %>
<div class="row">
            <div class="col-md-12">
              <div class="form-group text-center">
                <h4>Combien êtes vous ?</h4>
                <%= f.text_field :quantity %>
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-md-12">
              <div class="form-group text-center">
                <h4>Ou êtes vous ?</h4>
                <%= f.text_field :adress2 %>
              </div>
            </div>
          </div>


      <div class="row">
            <div class="col-md-12">
              <div class="form-group text-center">

<%= f.button :submit %>

              </div>
            </div>
          </div>

<% end %>

推送控制器:

class PushsController < ApplicationController
  before_action :authenticate_user!
  before_action :set_post
  before_action :set_push, only: [:edit, :update, :destroy]



  def create 
    @push = @post.pushs.create(push_params)
    @push.user_id = current_user.id
    if @push.save
      flash[:success] = 'Votre commande est enregisté !'
      redirect_to root_path 
    else    
      flash[:alert] = "Check the push form, something went horribly wrong."
      redirect_to root_path 
    end 
  end 

  def update
    if @push.update(push_params)
      flash[:success] = 'Votre commande est enregisté !'
      redirect_to root_path
    else
      flash[:alert] = "Check the push form, something went horribly wrong."
      render 'edit'
    end 
  end

  def destroy  
  @push = @post.pushs.find(params[:id])
  @push.destroy
  flash[:success] = "Push deleted :("
  redirect_to root_path
end  


private

  def push_params
    params.require(:push).permit(:user_id, :quantity, :prix2, :time, :adress2, :latitude2, :longitude2, :taked, :taked_by, :taked_at, :validated)
  end 


  def set_post  
    @post = Post.find(params[:post_id])
  end  

  def set_push
    @post = Post.find(params[:post_id])
    @push = @post.pushs.find(params[:id]) 
  end 

end

&安培;邮政控制人:

class PostsController < ApplicationController
  before_action :authenticate_user!
  before_action :set_post, only: [:show, :edit, :update, :destroy]
  before_action :post_admin, only: [:new, :edit, :update, :destroy]

  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all
  end

  # GET /posts/1
  # GET /posts/1.json
  def show
  end

  # GET /posts/new
  def new
   
    @post = Post.new
  
end

  # GET /posts/1/edit
  def edit
  end

  # POST /posts
  # POST /posts.json
  def create
    
    @post = Post.new(post_params)

    respond_to do |format|
      if @post.save
        format.html { redirect_to @post, notice: 'Post was successfully created.' }
        format.json { render :show, status: :created, location: @post }
      else
        format.html { render :new }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
   
  end

  # PATCH/PUT /posts/1
  # PATCH/PUT /posts/1.json
  def update
    respond_to do |format|
      if @post.update(post_params)
        format.html { redirect_to @post, notice: 'Post was successfully updated.' }
        format.json { render :show, status: :ok, location: @post }
      else
        format.html { render :edit }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /posts/1
  # DELETE /posts/1.json
  def destroy
    @post.destroy
    respond_to do |format|
      format.html { redirect_to posts_url, notice: 'Post was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_post
      @post = Post.find(params[:id])
    end

    def post_admin
      if current_user.admin?
      else 
        flash[:alert] = "That post doesn't belong to you!"
        redirect_to root_path
      end
    end 


    # Never trust parameters from the scary internet, only allow the white list through.
    def post_params
      params.require(:post).permit(:user_id, :title, :prix, :image, :description, :user_id)
    end
end

谢谢,显然如果您有任何建议,我很想学习

再见

0 个答案:

没有答案