<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Salma Mohamed</title>
    <description>The latest articles on DEV Community by Salma Mohamed (@salmamohamed).</description>
    <link>https://dev.to/salmamohamed</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F329876%2Fc3dfebcc-8f13-4520-b801-b54f9f3a6611.png</url>
      <title>DEV Community: Salma Mohamed</title>
      <link>https://dev.to/salmamohamed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/salmamohamed"/>
    <language>en</language>
    <item>
      <title>Updating 2 tables with one form Ruby on rails and MySQL database.</title>
      <dc:creator>Salma Mohamed</dc:creator>
      <pubDate>Thu, 08 Apr 2021 13:59:59 +0000</pubDate>
      <link>https://dev.to/salmamohamed/updating-2-tables-with-one-form-ruby-on-rails-and-mysql-database-3blg</link>
      <guid>https://dev.to/salmamohamed/updating-2-tables-with-one-form-ruby-on-rails-and-mysql-database-3blg</guid>
      <description>&lt;p&gt;Let's create 2 models that are related to each other...&lt;/p&gt;

&lt;p&gt;parent model : Product with name attribute.&lt;/p&gt;

&lt;p&gt;child model: Imaged with URL attribute.&lt;/p&gt;

&lt;p&gt;rails g model Image url:string &lt;/p&gt;

&lt;p&gt;rails g scaffold Product name:string references Image&lt;/p&gt;

&lt;p&gt;Next set-up MySQL database from this link: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ionos.com/digitalguide/server/know-how/use-mysql-with-ruby-on-rails/"&gt;https://www.ionos.com/digitalguide/server/know-how/use-mysql-with-ruby-on-rails/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;after setting up the db...&lt;/p&gt;

&lt;p&gt;user the product controller to update both the 2 models.&lt;/p&gt;

&lt;p&gt;like this: &lt;/p&gt;

&lt;p&gt;class ProductsController &amp;lt; ApplicationController&lt;br&gt;
  before_action :set_product, only: %i[ show edit update destroy ]&lt;/p&gt;

&lt;p&gt;# GET /products or /products.json&lt;br&gt;
  def index&lt;br&gt;
    @products = Product.all&lt;/p&gt;

&lt;p&gt;end&lt;/p&gt;

&lt;p&gt;# GET /products/1 or /products/1.json&lt;br&gt;
  def show&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# GET /products/new&lt;br&gt;
  def new&lt;br&gt;
    @product = Product.new&lt;br&gt;
    @image=@product.build_image&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# GET /products/1/edit&lt;br&gt;
  def edit&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# POST /products or /products.json&lt;br&gt;
  def create&lt;br&gt;
    @product = Product.new(product_params)&lt;br&gt;
    puts(product_params) &lt;br&gt;
    respond_to do |format|&lt;br&gt;
      if @product.save&lt;br&gt;
        format.html { redirect_to @product, notice: "Product was successfully created." }&lt;br&gt;
        format.json { render :show, status: :created, location: @product }&lt;br&gt;
      else&lt;br&gt;
        format.html { render :new, status: :unprocessable_entity }&lt;br&gt;
        format.json { render json: @product.errors, status: :unprocessable_entity }&lt;br&gt;
      end&lt;br&gt;
    end&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# PATCH/PUT /products/1 or /products/1.json&lt;br&gt;
  def update&lt;br&gt;
    respond_to do |format|&lt;br&gt;
      if @product.update(product_params)&lt;br&gt;
        format.html { redirect_to @product, notice: "Product was successfully updated." }&lt;br&gt;
        format.json { render :show, status: :ok, location: @product }&lt;br&gt;
      else&lt;br&gt;
        format.html { render :edit, status: :unprocessable_entity }&lt;br&gt;
        format.json { render json: @product.errors, status: :unprocessable_entity }&lt;br&gt;
      end&lt;br&gt;
    end&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# DELETE /products/1 or /products/1.json&lt;br&gt;
  def destroy&lt;br&gt;
    @product.destroy&lt;br&gt;
    respond_to do |format|&lt;br&gt;
      format.html { redirect_to products_url, notice: "Product was successfully destroyed." }&lt;br&gt;
      format.json { head :no_content }&lt;br&gt;
    end&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;private&lt;br&gt;
    # Use callbacks to share common setup or constraints between actions.&lt;br&gt;
    def set_product&lt;br&gt;
      @product = Product.find(params[:id])&lt;br&gt;
    end&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Only allow a list of trusted parameters through.
def product_params
  params.require(:product).permit(:name,
  image_attributes:[:url, :alt]
  )
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;end&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Updating 2 tables with one form Ruby on rails and MySQL database.</title>
      <dc:creator>Salma Mohamed</dc:creator>
      <pubDate>Thu, 08 Apr 2021 13:57:30 +0000</pubDate>
      <link>https://dev.to/salmamohamed/updating-2-tables-with-one-form-ruby-on-rails-and-mysql-database-3l91</link>
      <guid>https://dev.to/salmamohamed/updating-2-tables-with-one-form-ruby-on-rails-and-mysql-database-3l91</guid>
      <description>&lt;p&gt;Let's create 2 models that are related to each other...&lt;/p&gt;

&lt;p&gt;parent model : Product with name attribute.&lt;/p&gt;

&lt;p&gt;child model: Imaged with URL attribute.&lt;/p&gt;

&lt;p&gt;rails g model Image url:string &lt;/p&gt;

&lt;p&gt;rails g scaffold Product name:string references Image&lt;/p&gt;

&lt;p&gt;Next set-up MySQL database from this link: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ionos.com/digitalguide/server/know-how/use-mysql-with-ruby-on-rails/"&gt;https://www.ionos.com/digitalguide/server/know-how/use-mysql-with-ruby-on-rails/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;after setting up the db...&lt;/p&gt;

&lt;p&gt;user the product controller to update both the 2 models.&lt;/p&gt;

&lt;p&gt;like this in product controller: &lt;/p&gt;

&lt;p&gt;class ProductsController &amp;lt; ApplicationController&lt;br&gt;
  before_action :set_product, only: %i[ show edit update destroy ]&lt;/p&gt;

&lt;p&gt;# GET /products or /products.json&lt;br&gt;
  def index&lt;br&gt;
    @products = Product.all&lt;/p&gt;

&lt;p&gt;end&lt;/p&gt;

&lt;p&gt;# GET /products/1 or /products/1.json&lt;br&gt;
  def show&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# GET /products/new&lt;br&gt;
  def new&lt;br&gt;
    @product = Product.new&lt;br&gt;
    @image=@product.build_image&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# GET /products/1/edit&lt;br&gt;
  def edit&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# POST /products or /products.json&lt;br&gt;
  def create&lt;br&gt;
    @product = Product.new(product_params)&lt;br&gt;
    respond_to do |format|&lt;br&gt;
      if @product.save&lt;br&gt;
        format.html { redirect_to @product, notice: "Product was successfully created." }&lt;br&gt;
        format.json { render :show, status: :created, location: @product }&lt;br&gt;
      else&lt;br&gt;
        format.html { render :new, status: :unprocessable_entity }&lt;br&gt;
        format.json { render json: @product.errors, status: :unprocessable_entity }&lt;br&gt;
      end&lt;br&gt;
    end&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# PATCH/PUT /products/1 or /products/1.json&lt;br&gt;
  def update&lt;br&gt;
    respond_to do |format|&lt;br&gt;
      if @product.update(product_params)&lt;br&gt;
        format.html { redirect_to @product, notice: "Product was successfully updated." }&lt;br&gt;
        format.json { render :show, status: :ok, location: @product }&lt;br&gt;
      else&lt;br&gt;
        format.html { render :edit, status: :unprocessable_entity }&lt;br&gt;
        format.json { render json: @product.errors, status: :unprocessable_entity }&lt;br&gt;
      end&lt;br&gt;
    end&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;# DELETE /products/1 or /products/1.json&lt;br&gt;
  def destroy&lt;br&gt;
    @product.destroy&lt;br&gt;
    respond_to do |format|&lt;br&gt;
      format.html { redirect_to products_url, notice: "Product was successfully destroyed." }&lt;br&gt;
      format.json { head :no_content }&lt;br&gt;
    end&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;private&lt;br&gt;
    # Use callbacks to share common setup or constraints between actions.&lt;br&gt;
    def set_product&lt;br&gt;
      @product = Product.find(params[:id])&lt;br&gt;
    end&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Only allow a list of trusted parameters through.
def product_params
  params.require(:product).permit(:name,
  image_attributes:[:url]
  )
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;end&lt;/p&gt;

&lt;p&gt;Next.....&lt;/p&gt;

&lt;p&gt;update the _form.html.erb on product views:&lt;/p&gt;

&lt;p&gt;we want to give to combine both the models with one form: &lt;/p&gt;

&lt;p&gt;&amp;lt;%= form_with(model: product) do |form| %&amp;gt;&lt;br&gt;
  &amp;lt;% if product.errors.any? %&amp;gt;&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;h2&gt;&amp;lt;%= pluralize(product.errors.count, "error") %&amp;gt; prohibited this product from being saved:&lt;/h2&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  &amp;lt;ul&amp;gt;
    &amp;lt;% product.errors.each do |error| %&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;%= error.full_message %&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;% end %&amp;gt;
  &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;% end %&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;% 3.times do %&amp;gt;&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
    &amp;lt;%= form.label :name %&amp;gt;&lt;br&gt;
    &amp;lt;%= form.text_field :name %&amp;gt;



&lt;p&gt;&amp;lt;%= form.fields_for :image do |form| %&amp;gt;&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
  &amp;lt;%= form.label :url %&amp;gt;&lt;br&gt;
  &amp;lt;%= form.text_field :url %&amp;gt;&lt;br&gt;
  &amp;lt;%= form.label :alt %&amp;gt;&lt;br&gt;
  &amp;lt;%= form.text_field :alt %&amp;gt;


&lt;br&gt;
  &amp;lt;% end %&amp;gt;&lt;br&gt;
  &amp;lt;% end %&amp;gt;


&lt;br&gt;
    &amp;lt;%= form.label :name %&amp;gt;&lt;br&gt;
    &amp;lt;%= form.text_field :name %&amp;gt;



&lt;p&gt;&amp;lt;%= form.fields_for :image do |form| %&amp;gt;&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
  &amp;lt;%= form.label :url %&amp;gt;&lt;br&gt;
  &amp;lt;%= form.text_field :url %&amp;gt;&lt;br&gt;
  &amp;lt;%= form.label :alt %&amp;gt;&lt;br&gt;
  &amp;lt;%= form.text_field :alt %&amp;gt;


&lt;br&gt;
  &amp;lt;% end %&amp;gt;


&lt;br&gt;
    &amp;lt;%= form.submit %&amp;gt;&lt;br&gt;
  &lt;br&gt;
&amp;lt;% end %&amp;gt;

&lt;p&gt;lastly: update the the 2 models:&lt;/p&gt;

&lt;p&gt;product.rb&lt;/p&gt;

&lt;p&gt;class Product &amp;lt; ApplicationRecord&lt;br&gt;
  has_one :image,dependent: :destroy&lt;br&gt;
  accepts_nested_attributes_for :image&lt;br&gt;
end&lt;/p&gt;

&lt;p&gt;image.rb&lt;/p&gt;

&lt;p&gt;class Image &amp;lt; ApplicationRecord&lt;br&gt;
  belongs_to :product&lt;br&gt;
end&lt;/p&gt;

&lt;p&gt;if you guys have question about that.. you can ask me. Goodluck.&lt;/p&gt;

</description>
      <category>ruby</category>
    </item>
    <item>
      <title>React mentor</title>
      <dc:creator>Salma Mohamed</dc:creator>
      <pubDate>Fri, 29 May 2020 12:35:56 +0000</pubDate>
      <link>https://dev.to/salmamohamed/react-mentor-5gck</link>
      <guid>https://dev.to/salmamohamed/react-mentor-5gck</guid>
      <description>&lt;p&gt;Hello, guys am working on react project for the first time, can I get someone to mentor me on react please... I understand about the components but the states is what I need guidance with... any resource that will help me in this, I will highly appreciate. thank you&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
