На моей странице создания новой статьи у меня есть выбор для разных вариантов. В зависимости от того, какой вариант пользователь выбирает, я хотел бы установить значение другого атрибута.Установка значения атрибута В зависимости от выбора пользователя Rails 4
Не удалось найти лучший способ для этого. Я бы написал инструкцию if внутри нового представления? Или контроллер статьи?
вот мой new.html.erb:
<%= f.label "Rating" %><br>
<%= f.select :rating, options_for_select(['A+','A','A-','B+','B','B-','C+','C','C-','D+','D','D-','F+','F','F-'], params[:rating]), {}, { :class => 'span3 controls controls-row' } %>
<%= f.label "Rating color" %><br>
<%= f.text_field :ratingcolor %>
В частности, когда пользователь выбирает A +, A, A- или, я хотел бы, чтобы: ratingcolor автоматически присваивается зеленый цвет. Если B +, B или B-, тогда цвет желтый ... и т. Д.
Если есть документация по этому вопросу, можете ли вы указать мне именно так? Благодаря!
UPDATE
new.html.erb (упрощенная версия)
<div class="form-inputs">
<%= simple_form_for(@article) do |f| %>
<%= f.error_notification %>
<select id="rating">
<option value="A+">A+</option>
<option value="A">A</option>
<option value="A-">A-</option>
<option value="B+">B+</option>
<option value="B">B</option>
<option value="B-">B-</option>
<option value="C+">C+</option>
<option value="C">C</option>
<option value="C-">C-</option>
</select>
<label for="rating_color">Rating color</label>
<input id="rating_color" type="text" name="rating_color" />
<% end %>
</div>
Поскольку я использую simple_form_for, я пытался что-то вроде этого
<%= f.label "Rating" %><br>
<%= f.select :rating, options_for_select(['A+','A','A-','B+','B','B-','C+','C','C-','D+','D','D-','F+','F','F-'], params[:rating]), {}, :class => 'span3 controls controls-row', :input_html => { :id => "rating" } %>
<%= f.label "Rating color" %><br>
<%= f.text_field :ratingcolor, input_html => { :id => "rating_color" } %>
Но это не Работа.
Вот мой articles_controller.rb
class ArticlesController < ApplicationController
before_action :set_article, only: [:show, :edit, :update, :destroy]
before_filter :authenticate_user!, except: [:index, :show]
def index
if params[:query].present?
@articles = Article.search(params[:query], misspellings: {edit_distance: 1})
else
@articles = Article.all
end
if @articles.blank?
return redirect_to request_path
end
get_query
end
def show
@article = Article.find(params[:id])
if request.path != article_path(@article)
redirect_to @article, status: :moved_permanently
else
respond_to do |format|
format.html # show.html.erb
format.json { render json: @article }
end
end
end
def new
@article = current_user.articles.new
end
def edit
@article = current_user.articles.find(params[:id])
end
def create
@article = current_user.articles.new(article_params)
respond_to do |format|
if @article.save
format.html { redirect_to @article, notice: 'Article was successfully created.' }
format.json { render :show, status: :created, location: @article }
else
format.html { render :new }
format.json { render json: @article.errors, status: :unprocessable_entity }
end
end
end
def update
@article = current_user.articles.find(params[:id])
respond_to do |format|
if @article.update(article_params)
format.html { redirect_to @article, notice: 'Article was successfully updated.' }
format.json { render :show, status: :ok, location: @article }
else
format.html { render :edit }
format.json { render json: @article.errors, status: :unprocessable_entity }
end
end
end
def destroy
@article = current_user.articles.find(params[:id])
@article.destroy
respond_to do |format|
format.html { redirect_to articles_url, notice: 'Article was successfully destroyed.' }
format.json { head :no_content }
end
end
private
def set_article
@article = Article.find(params[:id])
end
def article_params
params.require(:article).permit(:isare, :name, :image1, :image2, :image3, :image4, :r1image, :r2image, :r3image, :r4image, :title, :aka, :category, :rating, :ratingcolor, :whyrating, :alternative1, :alternative2, :alternative3, :checkthisout, :nutritiontable, :sugarsdp, :facts, :video1, :video2, :related1, :related2, :related3, :related4, :sources)
end
def get_query
@userquery = params[:query]
end
end
Звучит как 'Javascript'. Вы пытались сделать это с помощью 'jQuery'? Кроме того, вы имеете в виду, что вы хотите, чтобы': ratingcolor' был назначен строка «зеленый», «желтый» и т. д. –
да точно, это будет строка. Является ли javascript лучшим способом для этого? – Kathan
Да, я бы написал находится в 'jQuery'. Вы знакомы с ним? –